(command.CommandList
  children: [
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <err_exit>
      name: err_exit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <print>
              more_env: []
              words: [{<print>} {<-u2>} {<-n>} {(DQ <Id.Lit_BadBackslash '\\'> <t>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <print>
              more_env: []
              words: [
                {<print>}
                {<-u2>}
                {<-r>}
                {(${ Id.VSub_Name Command) <Id.Lit_LBracket '['> ($ Id.VSub_Number 1) 
                  <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'>
                }
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_At '@'>
                      var_name: '@'
                      suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>})
                      right: <Id.Arith_RBrace _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <let>
              more_env: []
              words: [{<let>} {<Id.Lit_VarLike 'Errors+='> <1>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <alias>
      more_env: []
      words: [{<alias>} {<Id.Lit_VarLike 'err_exit='> (SQ <'err_exit $LINENO'>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'Command='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'Command='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Command='> name:Command)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Number 0>
                var_name: 0
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VOp1_DPound '##'>
                    arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <integer>
      more_env: []
      words: [{<integer>} {<Id.Lit_VarLike 'Errors='> <0>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'tmp='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'tmp='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp='> name:tmp)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <mktemp>
                        more_env: []
                        words: [{<mktemp>} {<-dt>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          ]
          redirects: []
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <err_exit>
                  more_env: []
                  words: [{<err_exit>} {<mktemp>} {<-dt>} {<failed>}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {(DQ <'cd /; rm -rf '> ($ Id.VSub_DollarName tmp))} {<EXIT>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'r='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'r='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
          op: assign_op.Equal
          rhs: {<readonly>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'u='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u='> name:u)
          op: assign_op.Equal
          rhs: {<Uppercase>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'l='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'l='> name:l)
          op: assign_op.Equal
          rhs: {<Lowercase>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'i='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
          op: assign_op.Equal
          rhs: {<22>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'i8='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i8='> name:i8)
          op: assign_op.Equal
          rhs: {<10>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'L='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L)
          op: assign_op.Equal
          rhs: {<abc>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'L5='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L5='> name:L5)
          op: assign_op.Equal
          rhs: {<def>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'uL5='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uL5='> name:uL5)
          op: assign_op.Equal
          rhs: {<abcdef>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'xi='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'xi='> name:xi)
          op: assign_op.Equal
          rhs: {<20>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {<export>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 't='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t)
          op: assign_op.Equal
          rhs: {<tagged>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'H='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'H='> name:H)
          op: assign_op.Equal
          rhs: {<hostname>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'LZ5='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LZ5='> name:LZ5)
          op: assign_op.Equal
          rhs: {<026>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'RZ5='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RZ5='> name:RZ5)
          op: assign_op.Equal
          rhs: {<026>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'Z5='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Z5='> name:Z5)
          op: assign_op.Equal
          rhs: {<123>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'lR5='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lR5='> name:lR5)
          op: assign_op.Equal
          rhs: {<ABcdef>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'R5='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'R5='> name:R5)
          op: assign_op.Equal
          rhs: {<def>}
        )
        (AssignPair
          left: <Id.Lit_VarLike 'n='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
          op: assign_op.Equal
          rhs: {<l>}
        )
      ]
      redirects: []
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [option]
      iterable: 
        (for_iter.Words
          words: [
            {<u>}
            {<l>}
            {<i>}
            {<i8>}
            {<L>}
            {<L5>}
            {<LZ5>}
            {<RZ5>}
            {<Z5>}
            {<r>}
            {<x>}
            {<H>}
            {<t>}
            {<R5>}
            {<uL5>}
            {<lR5>}
            {<xi>}
            {<n>}
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<-> ($ Id.VSub_DollarName option)} {($ Id.VSub_DollarName option)}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.ShAssignment
              left: <Id.Lit_VarLike 'r='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'r='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                  op: assign_op.Equal
                  rhs: {<newval>}
                )
              ]
              redirects: []
            )
          right: <Id.Right_Subshell _>
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {<readonly>} {<attribute>} {<fails>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'i='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'i='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
          op: assign_op.Equal
          rhs: {<i> <Id.Lit_Other '+'> <5>}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DParen
                  left: <Id.Op_DLeftParen _>
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: ($ Id.Lit_ArithVarLike i)
                      right: {<Id.Lit_Digits 27>}
                    )
                  right: <Id.Op_DRightParen _>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<integer>} {<attributes>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [296 307]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName i8)}
                      right: {<8> <Id.Lit_Pound '#'> <12>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<integer>} {<base>} {<8>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [319 333]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName u)}
                      right: {<UPPERCASE>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<uppercase>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [347 359]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName l)}
                      right: {<lowercase>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<lowercase>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [369 381]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName n)}
                      right: {<lowercase>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<reference>} {<variables>} {<fail>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [391 403]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {<t> <Id.BoolBinary_GlobEqual '='> <tagged>}
                      right: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <typeset>
                                more_env: []
                                words: [{<typeset>} {<-t>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<tagged>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [415 433]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {<t>}
                      right: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <typeset>
                                more_env: []
                                words: [{<typeset>} {<Id.Lit_Other '+'> <t>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<tagged>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [443 460]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName Z5)}
                      right: {<00123>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<zerofill>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [470 482]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName RZ5)}
                      right: {<00026>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<right>} {<zerofill>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [492 504]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'L='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'L='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L)
          op: assign_op.Equal
          rhs: {<12345>}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName L)}
                      right: {<123>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<leftjust>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [519 531]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName L5)}
                      right: {(DQ <'def  '>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<leftjust>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [541 555]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName uL5)}
                      right: {<ABCDE>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<leftjust>} {<uppercase>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [565 577]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName lR5)}
                      right: {<bcdef>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<rightjust>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [589 601]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName R5)}
                      right: {(DQ <'  def'>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<rightjust>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [611 625]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <Id.VSub_DollarName '$SHELL'>
                                more_env: []
                                words: [{($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'echo $x'>)}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<export>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<export>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [635 655]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <Id.VSub_DollarName '$SHELL'>
                                more_env: []
                                words: [{($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'xi=xi+4;echo $xi'>)}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<24>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {<export>} {<attributes>} {<fails>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [665 685]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <Id.VSub_DollarName '$SHELL'>
                    more_env: [(EnvPair left:<Id.Lit_VarLike 'foo='> name:foo val:{<abc>})]
                    words: [{($ Id.VSub_DollarName SHELL)}]
                    redirects: [
                      (Redir
                        op: <Id.Redir_DLess '<<'>
                        loc: (redir_loc.Fd fd:0)
                        arg: 
                          (redir_param.HereDoc
                            here_begin: {<Id.KW_Bang '!'>}
                            here_end_tok: <Id.Undefined_Tok ''>
                            stdin_parts: [
                              <'\tfoo=bar\n'>
                              <'\t'>
                              ($ Id.VSub_DollarName SHELL)
                              <' -c  \'print '>
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\$'>
                                ch: '$'
                              )
                              <'foo\'\n'>
                            ]
                          )
                      )
                    ]
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName x)}
                      right: {<bar>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'environment variables require re-export'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [717 729]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<Id.Lit_Other '+'>}]
              redirects: []
              do_fork: T
            )
          right: <Id.Right_Subshell _>
          redirects: [
            (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
            (Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
          ]
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset + not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Subshell
      left: <Id.Op_LParen _>
      child: 
        (command.Simple
          blame_tok: <typeset>
          more_env: []
          words: [{<typeset>} {<-L-5>} {<Id.Lit_VarLike 'buf='> (DQ <A>)}]
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
      right: <Id.Right_Subshell _>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {($ Id.VSub_QMark '?')}
                      right: {<0>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'typeset allows negative field for left/right adjust'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [775 787]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'a='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'a='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a)
          op: assign_op.Equal
          rhs: {<b>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [{<readonly>} {($ Id.VSub_DollarName a) <Id.Lit_Equals '='> <foo>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName b)}
                      right: {<foo>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'readonly $a=b not working'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [806 818]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <export>
                                    more_env: []
                                    words: [{<export>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <grep>
                                    more_env: []
                                    words: [{<grep>} {(SQ <'^PATH='>)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<PATH> <Id.BoolBinary_GlobEqual '='> <Id.Lit_Other '*'>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'export not working'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [828 852]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'picture='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'picture='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'picture='> name:picture)
          op: assign_op.Equal
          rhs: 
            {
              (ShArrayLiteral
                left: <Id.Op_LParen _>
                words: [
                  {<Id.Lit_VarLike 'bitmap='> <'/fruit'>}
                  {<Id.Lit_VarLike 'size='> 
                    (ShArrayLiteral
                      left: <Id.Op_LParen _>
                      words: [{<typeset>} {<-E>} {<Id.Lit_VarLike 'x='> <2.5>}]
                      right: <Id.Right_ShArrayLiteral _>
                    )
                  }
                ]
                right: <Id.Right_ShArrayLiteral _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'string='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'string='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'string='> name:string)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <print>
                      more_env: []
                      words: [{<print>} {($ Id.VSub_DollarName picture)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {(DQ (${ Id.VSub_Name string))}
                      right: {<Id.Lit_Other '*'> (SQ <'size=( typeset -E'>) <Id.Lit_Other '*'>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'print of compound exponential variable not working'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [891 911]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'sz='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'sz='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sz='> name:sz)
          op: assign_op.Equal
          rhs: 
            {
              (ShArrayLiteral
                left: <Id.Op_LParen _>
                words: [{<typeset>} {<-E>} {<Id.Lit_VarLike 'y='> <2.2>}]
                right: <Id.Right_ShArrayLiteral _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'string='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'string='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'string='> name:string)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <print>
                      more_env: []
                      words: [{<print>} {($ Id.VSub_DollarName sz)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {(DQ (${ Id.VSub_Name sz))}
                      right: {<Id.Lit_Other '*'> (SQ <'typeset -E -F'>) <Id.Lit_Other '*'>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'print of exponential shows both -E and -F attributes'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [940 960]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <print>
      more_env: []
      words: [{<print>} {(SQ <'typeset -i m=48/4+1;print -- $m'>)}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName tmp) <'/script'>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName tmp) <'/script'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-Z2>} {<m>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <Id.VSub_DollarName '$tmp'>
                                more_env: []
                                words: [{($ Id.VSub_DollarName tmp) <'/script'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<13>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'attributes not cleared for script execution'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [995 1010]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <print>
      more_env: []
      words: [{<print>} {(SQ <'print VAR=$VAR'>)}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName tmp) <'/script'>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-L70>} {<Id.Lit_VarLike 'VAR='> <Id.KW_Var var>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <Id.VSub_DollarName '$tmp'>
      more_env: []
      words: [{($ Id.VSub_DollarName tmp) <'/script'>}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName tmp) <'/script.1'>}
        )
      ]
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <Id.Redir_Less '<'>
                        more_env: []
                        words: []
                        redirects: [
                          (Redir
                            op: <Id.Redir_Less '<'>
                            loc: (redir_loc.Fd fd:0)
                            arg: {($ Id.VSub_DollarName tmp) <'/script.1'>}
                          )
                        ]
                        do_fork: F
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<VAR> <Id.BoolBinary_GlobEqual '='>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -L should not be inherited'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-Z>} {<Id.Lit_VarLike 'LAST='> <00>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<-f>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <foo>
      name: foo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: (bool_expr.WordTest w:{($ Id.VSub_Number 1)})
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'LAST='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'LAST='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LAST='> name:LAST)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1090 1099]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.DParen
                  left: <Id.Op_DLeftParen _>
                  child: 
                    (arith_expr.UnaryAssign
                      op_id: Id.Node_PostDPlus
                      child: ($ Id.Lit_ArithVarLike LAST)
                    )
                  right: <Id.Op_DRightParen _>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple blame_tok:<foo> more_env:[] words:[{<foo>} {<1>}] redirects:[] do_fork:T)
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DParen
                  left: <Id.Op_DLeftParen _>
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: 
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name LAST>
                            var_name: LAST
                            prefix_op: <Id.VSub_Pound '#'>
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      right: {<Id.Lit_Digits 2>}
                    )
                  right: <Id.Op_DRightParen _>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'LAST!=2'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1122 1138]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple blame_tok:<foo> more_env:[] words:[{<foo>}] redirects:[] do_fork:T)
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DParen
                  left: <Id.Op_DLeftParen _>
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: 
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name LAST>
                            var_name: LAST
                            prefix_op: <Id.VSub_Pound '#'>
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      right: {<Id.Lit_Digits 2>}
                    )
                  right: <Id.Op_DRightParen _>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'LAST!=2'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1150 1166]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <set>
                            more_env: []
                            words: [{<set>}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <grep>
                            more_env: []
                            words: [{<grep>} {<LAST>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<LAST> <Id.BoolBinary_GlobEqual '='> <02>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'LAST not correct in set list'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<set> more_env:[] words:[{<set>} {<-a>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'foo='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'foo='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'foo='> name:foo)
          op: assign_op.Equal
          rhs: {<bar>}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <export>
                                    more_env: []
                                    words: [{<export>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <grep>
                                    more_env: []
                                    words: [{<grep>} {<Id.Lit_Other '^'> <Id.Lit_VarLike 'foo='>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'foo=bar'>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'all export not working'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1215 1238]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <read>
      more_env: []
      words: [{<read>} {<foo>}]
      redirects: [
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<Id.KW_Bang '!'>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [<'bar\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <export>
                                    more_env: []
                                    words: [{<export>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <grep>
                                    more_env: []
                                    words: [{<grep>} {<Id.Lit_Other '^'> <Id.Lit_VarLike 'foo='>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'foo=bar'>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'all export not working with read'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1262 1285]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <typeset>
                                    more_env: []
                                    words: [{<typeset>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <grep>
                                    more_env: []
                                    words: [{<grep>} {<PS2>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<PS2>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err_exit>
              more_env: []
              words: [{<err_exit>} {(SQ <'typeset without arguments outputs names without attributes'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1295 1315]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<a>} {<z>} {<q>} {<x>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'w1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'w1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w1='> name:w1)
          op: assign_op.Equal
          rhs: {<hello>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'w2='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'w2='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w2='> name:w2)
          op: assign_op.Equal
          rhs: {<world>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 't1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 't1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't1='> name:t1)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName w1) <' '> ($ Id.VSub_DollarName w2))}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.DParen
                  left: <Id.Op_DLeftParen _>
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DEqual
                      left: {(SQ <a>)}
                      right: {<Id.Lit_Digits 97>}
                    )
                  right: <Id.Op_DRightParen _>
                  redirects: []
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'b1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'b1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b1='> name:b1)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_VarLike 'aGVsbG8gd29ybGQ='>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'b2='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'b2='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b2='> name:b2)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_VarLike 'aGVsbG8gd29ybGRoZWxsbyB3b3JsZA='> <Id.Lit_Equals '='>}
                )
              ]
              redirects: []
            )
          ]
          spids: [1348 1363]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'b1='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'b1='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b1='> name:b1)
              op: assign_op.Equal
              rhs: {<Id.Lit_VarLike 'iIWTk5ZAppaZk4Q='>}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'b2='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'b2='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b2='> name:b2)
              op: assign_op.Equal
              rhs: {<Id.Lit_VarLike 'iIWTk5ZAppaZk4SIhZOTlkCmlpmThA='> <Id.Lit_Equals '='>}
            )
          ]
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'z='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'z='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName b1)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<Id.Lit_VarLike 'x='> ($ Id.VSub_DollarName b1)}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {(DQ ($ Id.VSub_DollarName z))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <print>
          more_env: []
          words: [{<print>} {<-u2>} {(SQ <'binary variable not expanding correctly'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <printf>
                        more_env: []
                        words: [{<printf>} {(DQ <'%B'>)} {<x>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {($ Id.VSub_DollarName t1)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -b not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<-Z5>} {<Id.Lit_VarLike 'a='> ($ Id.VSub_DollarName b1)}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <printf>
                        more_env: []
                        words: [{<printf>} {(DQ <'%B'>)} {<a>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {($ Id.VSub_DollarName w1)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -b -Z5 not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [
        {<typeset>}
        {<-b>}
        {<Id.Lit_VarLike 'q='> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName x)}
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName q)}
              right: {($ Id.VSub_DollarName b2)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -b not working with concatination'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <printf>
                        more_env: []
                        words: [{<printf>} {(DQ <'%B'>)} {<q>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {($ Id.VSub_DollarName t1) ($ Id.VSub_DollarName t1)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -b concatination not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x+='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x+='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x+='> name:x)
          op: assign_op.PlusEqual
          rhs: {($ Id.VSub_DollarName b1)}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {($ Id.VSub_DollarName b2)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -b not working with append'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <printf>
                        more_env: []
                        words: [{<printf>} {(DQ <'%B'>)} {<x>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {($ Id.VSub_DollarName t1) ($ Id.VSub_DollarName t1)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -b append not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<-Z20>} {<Id.Lit_VarLike 'z='> ($ Id.VSub_DollarName b1)}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DParen
          left: <Id.Op_DLeftParen _>
          child: 
            (arith_expr.Binary
              op_id: Id.Arith_DEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <printf>
                            more_env: []
                            words: [{<printf>} {(DQ <'%B'>)} {<z>}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <wc>
                            more_env: []
                            words: [{<wc>} {<-c>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<Id.Lit_Digits 20>}
            )
          right: <Id.Op_DRightParen _>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -b -Z20 not storing 20 bytes'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (BraceGroup
      left: <Id.Lit_LBrace '{'>
      children: [
        (command.Simple
          blame_tok: <typeset>
          more_env: []
          words: [{<typeset>} {<-b>} {<v1>} {<v2>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <read>
          more_env: []
          words: [{<read>} {<-N11>} {<v1>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <read>
          more_env: []
          words: [{<read>} {<-N22>} {<v2>}]
          redirects: []
          do_fork: T
        )
      ]
      redirects: [
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<Id.KW_Bang '!'>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [<'hello worldhello worldhello world\n'>]
            )
        )
      ]
      right: <Id.Lit_RBrace '}'>
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName v1)}
              right: {(DQ ($ Id.VSub_DollarName b1))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [
            {<err_exit>}
            {(DQ <'v1='> ($ Id.VSub_DollarName v1) <' should be '> ($ Id.VSub_DollarName b1))}
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName v2)}
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [
            {<err_exit>}
            {(DQ <'v1='> ($ Id.VSub_DollarName v2) <' should be '> ($ Id.VSub_DollarName x))}
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <env>
                  more_env: []
                  words: [{<env>} {(SQ <'!=1'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (Redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <env>
                                more_env: []
                                words: [
                                  {<env>}
                                  {(SQ <'!=1'>)}
                                  {($ Id.VSub_DollarName SHELL)}
                                  {<-c>}
                                  {(SQ <'echo ok'>)}
                                ]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<ok>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <err_exit>
                  more_env: []
                  words: [{<err_exit>} {(SQ <'malformed environment terminates shell'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          spids: [1701 1715]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<Id.KW_Var var>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<Id.KW_Var var>}]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <printf>
          more_env: []
          words: [{<printf>} {(SQ <'12%Z34'>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <read>
          more_env: []
          words: [{<read>} {<-r>} {<-N>} {<5>} {<Id.KW_Var var>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName var)}
              right: {<MTIAMzQ> <Id.BoolBinary_GlobEqual '='>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'binary files with zeros not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<Id.KW_Var var>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <command>
                  more_env: []
                  words: [{<command>} {<typeset>} {<-usi>} {<Id.Lit_VarLike 'var='> <0xfffff>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.AndOr
              children: [
                (command.DParen
                  left: <Id.Op_DLeftParen _>
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DEqual
                      left: {($ Id.VSub_DollarName var)}
                      right: {<Id.Lit_Digits 0> <Id.Lit_ArithVarLike xffff>}
                    )
                  right: <Id.Op_DRightParen _>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <err_exit>
                  more_env: []
                  words: [{<err_exit>} {(SQ <'unsigned short integers not working'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          spids: [1805 1820]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -usi cannot be used for unsigned short'>)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <Id.VSub_DollarName '$SHELL'>
                        more_env: []
                        words: [
                          {($ Id.VSub_DollarName SHELL)}
                          {<-c>}
                          {(SQ <'unset foo;typeset -Z2 foo; print ${foo:-3}'>)}
                        ]
                        redirects: [
                          (Redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<'/dev/null'>}
                          )
                        ]
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<3>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'${foo:-3} not 3 when typeset -Z2 field undefined'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <Id.VSub_DollarName '$SHELL'>
                        more_env: []
                        words: [
                          {($ Id.VSub_DollarName SHELL)}
                          {<-c>}
                          {(SQ <'unset foo;typeset -Z2 foo; print ${foo:=3}'>)}
                        ]
                        redirects: [
                          (Redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<'/dev/null'>}
                          )
                        ]
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<03>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'${foo:=-3} not 3 when typeset -Z2 foo undefined'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>} {<bar>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<-f>} {<fun>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <fun>
      name: fun
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'foo='> <hello>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<-x>} {<Id.Lit_VarLike 'bar='> <world>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {($ Id.VSub_DollarName foo)}
                      right: {<hello>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <err_exit>
                  more_env: []
                  words: [{<err_exit>} {(SQ <'export scoping problem in function'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple blame_tok:<fun> more_env:[] words:[{<fun>}] redirects:[] do_fork:T)
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <export>
                            more_env: []
                            words: [{<export>}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <grep>
                            more_env: []
                            words: [{<grep>} {<foo>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(SQ <'foo=hello'>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'export not working in functions'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.WordTest
              w: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <export>
                            more_env: []
                            words: [{<export>}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <grep>
                            more_env: []
                            words: [{<grep>} {<bar>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -x not local'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <Id.VSub_DollarName '$SHELL'>
                        more_env: []
                        words: [
                          {($ Id.VSub_DollarName SHELL)}
                          {<-c>}
                          {(SQ <'typeset -r IFS=;print -r $(pwd)'>)}
                        ]
                        redirects: [
                          (Redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<'/dev/null'>}
                          )
                        ]
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <pwd>
                          more_env: []
                          words: [{<pwd>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'readonly IFS causes command substitution to fail'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ShAssignment
      left: <Id.Lit_ArrayLhsOpen 'fred['>
      pairs: [
        (AssignPair
          left: <Id.Lit_ArrayLhsOpen 'fred['>
          lhs: 
            (sh_lhs_expr.IndexedName
              left: <Id.Lit_ArrayLhsOpen 'fred['>
              name: fred
              index: {<Id.Lit_Digits 66>}
            )
          op: assign_op.Equal
          rhs: {<88>}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-pa>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<Id.Lit_Other '*'> <fred> <Id.Lit_Other '*'>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -pa not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<x>} {<y>} {<z>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-LZ3>} {<Id.Lit_VarLike 'x='> <abcd>} {<y>} {<Id.Lit_VarLike 'z='> <00abcd>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'y='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'y='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y)
          op: assign_op.Equal
          rhs: {<03>}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName y)}
              right: {(DQ <'3  '>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'-LZ3 not working for value 03'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {(DQ <abc>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'-LZ3 not working for value abcd'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {(DQ <abc>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'-LZ3 not working for value 00abcd'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<x>} {<z>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<Id.Lit_Other '+'> <a>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.WordTest
              w: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset -p for z undefined failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<z>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -i z=45'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <eval>
      more_env: []
      words: [{<eval>} {(DQ ($ Id.VSub_DollarName x))}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name x>
                      var_name: x
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VOp1_Percent '%'>
                          arg_word: {<'='> <Id.Lit_Other '*'>}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<z>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -a z=(a b c)'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <eval>
      more_env: []
      words: [{<eval>} {(DQ ($ Id.VSub_DollarName x))}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name x>
                      var_name: x
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VOp1_Percent '%'>
                          arg_word: {<'='> <Id.Lit_Other '*'>}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<z>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -C z=(\n'> <'\tfoo=bar\n'> <'\txxx=bam\n'> <')'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <eval>
      more_env: []
      words: [{<eval>} {(DQ ($ Id.VSub_DollarName x))}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (SingleQuoted
                          left: <Id.Left_DollarSingleQuote '$\''>
                          tokens: [<Id.Char_OneChar '\\t'>]
                          right: <Id.Right_SingleQuote '\''>
                        )
                      }
                    replace: (rhs_word__Empty)
                    replace_mode: Id.Lit_Slash
                    slash_tok: <Id.VOp2_Slash _>
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (SingleQuoted
                          left: <Id.Left_DollarSingleQuote '$\''>
                          tokens: [<Id.Char_Literals '('> <Id.Char_OneChar '\\n'>]
                          right: <Id.Right_SingleQuote '\''>
                        )
                      }
                    replace: {(SQ <'('>)}
                    replace_mode: Id.Lit_Slash
                    slash_tok: <Id.VOp2_Slash _>
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (SingleQuoted
                          left: <Id.Left_DollarSingleQuote '$\''>
                          tokens: [<Id.Char_OneChar '\\n'>]
                          right: <Id.Right_SingleQuote '\''>
                        )
                      }
                    replace: {(SQ <';'>)}
                    replace_mode: Id.Lit_Slash
                    slash_tok: <Id.VOp2_Slash _>
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{(SQ <';)'>)})
                right: <Id.Right_DollarBrace '}'>
              ) (SQ <')'>)
            }
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name x>
                      var_name: x
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VOp1_DPercent '%%'>
                          arg_word: {<'='> <Id.Lit_Other '*'>}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<z>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -A z=([bar]=bam [xyz]=bar)'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <eval>
      more_env: []
      words: [{<eval>} {(DQ ($ Id.VSub_DollarName x))}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name x>
                      var_name: x
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VOp1_DPercent '%%'>
                          arg_word: {<'='> <Id.Lit_Other '*'>}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<z>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'foo='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'foo='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'foo='> name:foo)
          op: assign_op.Equal
          rhs: {<abc>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -n z=foo'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <eval>
      more_env: []
      words: [{<eval>} {(DQ ($ Id.VSub_DollarName x))}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name x>
                      var_name: x
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VOp1_DPercent '%%'>
                          arg_word: {<'='> <Id.Lit_Other '*'>}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<Id.Lit_Other '+'> <n>} {<z>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>} {<z>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [
        {<typeset>}
        {<-T>}
        {<Id.Lit_VarLike 'Pt_t='> 
          (ShArrayLiteral
            left: <Id.Op_LParen _>
            words: [{<float>} {<Id.Lit_VarLike 'x='> <1>} {<Id.Lit_VarLike 'y='> <2>}]
            right: <Id.Right_ShArrayLiteral _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<Pt_t> more_env:[] words:[{<Pt_t>} {<z>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name z>
                var_name: z
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (SingleQuoted
                          left: <Id.Left_DollarSingleQuote '$\''>
                          tokens: [<Id.Char_OneChar '\\t'>]
                          right: <Id.Right_SingleQuote '\''>
                        )
                      }
                    replace: (rhs_word__Empty)
                    replace_mode: Id.Lit_Slash
                    slash_tok: <Id.VOp2_Slash _>
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (SingleQuoted
                          left: <Id.Left_DollarSingleQuote '$\''>
                          tokens: [<Id.Char_Literals '('> <Id.Char_OneChar '\\n'>]
                          right: <Id.Right_SingleQuote '\''>
                        )
                      }
                    replace: {(SQ <'('>)}
                    replace_mode: Id.Lit_Slash
                    slash_tok: <Id.VOp2_Slash _>
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (SingleQuoted
                          left: <Id.Left_DollarSingleQuote '$\''>
                          tokens: [<Id.Char_OneChar '\\n'>]
                          right: <Id.Right_SingleQuote '\''>
                        )
                      }
                    replace: {(SQ <';'>)}
                    replace_mode: Id.Lit_Slash
                    slash_tok: <Id.VOp2_Slash _>
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'x='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'x='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{(SQ <';)'>)})
                right: <Id.Right_DollarBrace '}'>
              ) (SQ <')'>)
            }
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ <'Pt_t z='> ($ Id.VSub_DollarName x))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset -p for type failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<Id.Lit_Other '+'> <p>} {<z>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ <'Pt_t z'>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(DQ <'typeset +p for type failed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<z>}] redirects:[] do_fork:T)
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <foo>
      name: foo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<-p>} {<bar>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'bar='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'bar='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bar='> name:bar)
          op: assign_op.Equal
          rhs: {<xxx>}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <foo>
                        more_env: []
                        words: [{<foo>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<bar> <Id.BoolBinary_GlobEqual '='> <xxx>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -p not working inside a function'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-L5>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<foo>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(SQ <'typeset -L 5 foo'>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [
            {<err_exit>}
            {(SQ <'typeset -p not working for variables with attributes but without a value'>)}
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$SHELL'>
              more_env: []
              words: [{($ Id.VSub_DollarName SHELL)}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'typeset -L3 foo=aaa\n'>
                        <'typeset -L6 foo=bbbbbb\n'>
                        <'[[ '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        )
                        <'foo == bbbbbb ]]\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -L should not preserve old attributes'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$SHELL'>
              more_env: []
              words: [{($ Id.VSub_DollarName SHELL)}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'typeset -R3 foo=aaa\n'>
                        <'typeset -R6 foo=bbbbbb\n'>
                        <'[[ '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        )
                        <'foo == bbbbbb ]]\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          right: <Id.Lit_RBrace '}'>
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -R should not preserve old attributes'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'expected='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'expected='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expected='> name:expected)
          op: assign_op.Equal
          rhs: {(SQ <'YWJjZGVmZ2hpag=='>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<-Z10>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <read>
      more_env: []
      words: [{<read>} {<foo>}]
      redirects: [
        (Redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)})
      ]
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName foo)}
              right: {(DQ ($ Id.VSub_DollarName expected))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'read foo, where foo is "typeset -b -Z10" not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<-Z10>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <read>
      more_env: []
      words: [{<read>} {<-N10>} {<foo>}]
      redirects: [
        (Redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)})
      ]
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName foo)}
              right: {(DQ ($ Id.VSub_DollarName expected))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset -b -Z10" not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<-A>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <read>
      more_env: []
      words: [{<read>} {<-N10>} {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>}]
      redirects: [
        (Redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)})
      ]
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name foo>
                    var_name: foo
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName expected))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset  -b -A" foo not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<-a>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <read>
      more_env: []
      words: [{<read>} {<-N10>} {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>}]
      redirects: [
        (Redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)})
      ]
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name foo>
                    var_name: foo
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName expected))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset  -b -a" foo not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <printf>
                        more_env: []
                        words: [
                          {<printf>}
                          {<Id.Lit_Other '%'> <B>}
                          {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>}
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<abcdefghij>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'printf %B for binary associative array element not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <printf>
                        more_env: []
                        words: [
                          {<printf>}
                          {<Id.Lit_Other '%'> <B>}
                          {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>}
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<abcdefghij>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'printf %B for binary indexed array element not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$SHELL'>
          more_env: []
          words: [{($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'export foo=(bar=3)'>)}]
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'compound variables cannot be exported'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$SHELL'>
          more_env: []
          words: [{($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'builtin date'>)}]
          redirects: [
            (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
            (Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
          ]
          do_fork: T
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SEC='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SEC='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SEC='> name:SEC)
                  op: assign_op.Equal
                  rhs: {<1234252800>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ETZ='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ETZ='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ETZ='> name:ETZ)
                  op: assign_op.Equal
                  rhs: {<EST5EDT>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'EDT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'EDT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EDT='> name:EDT)
                  op: assign_op.Equal
                  rhs: {<03>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PTZ='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PTZ='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PTZ='> name:PTZ)
                  op: assign_op.Equal
                  rhs: {<PST8PDT>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PDT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PDT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PDT='> name:PDT)
                  op: assign_op.Equal
                  rhs: {<00>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'CMD='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'CMD='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMD='> name:CMD)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'date -f%H '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\\\'>
                          ch: '\\'
                        ) <'#'> ($ Id.VSub_DollarName SEC)
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'TZ='> ($ Id.VSub_DollarName ETZ)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [
                {<set>}
                {<-->}
                {
                  (DQ ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) <' '> 
                    ($ Id.VSub_DollarName EDT)
                  )
                }
                {(DQ )}
                {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))}
                {(DQ )}
                {
                  (DQ ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) <' '> 
                    ($ Id.VSub_DollarName EDT)
                  )
                }
                {(DQ )}
                {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))}
                {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))}
                {
                  (DQ ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) <' '> 
                    ($ Id.VSub_DollarName EDT)
                  )
                }
                {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))}
                {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))}
                {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))}
                {
                  (DQ ($ Id.VSub_DollarName PDT) <' '> ($ Id.VSub_DollarName EDT) <' '> 
                    ($ Id.VSub_DollarName PDT)
                  )
                }
                {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))}
                {(DQ )}
                {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))}
                {
                  (DQ ($ Id.VSub_DollarName PDT) <' '> ($ Id.VSub_DollarName EDT) <' '> 
                    ($ Id.VSub_DollarName PDT)
                  )
                }
                {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))}
                {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))}
                {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))}
                {
                  (DQ ($ Id.VSub_DollarName EDT) <' '> ($ Id.VSub_DollarName PDT) <' '> 
                    ($ Id.VSub_DollarName EDT)
                  )
                }
                {(DQ <'foo=bar'>)}
                {(DQ <'TZ='> ($ Id.VSub_DollarName PTZ))}
                {(DQ <'TZ='> ($ Id.VSub_DollarName ETZ))}
              ]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_GreatEqual
                          left: {($ Id.VSub_Pound '#')}
                          right: {<Id.Lit_Digits 4>}
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'exp='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'exp='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'got='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'got='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'got='> name:got)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <print>
                                    more_env: []
                                    words: [
                                      {<print>}
                                      {
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <Id.VSub_DollarName '$SHELL'>
                                              more_env: []
                                              words: [
                                                {($ Id.VSub_DollarName SHELL)}
                                                {<-c>}
                                                {
                                                  (DQ <'builtin date; '> ($ Id.VSub_Number 2) <' '> 
                                                    ($ Id.VSub_DollarName CMD) <'; '> ($ Id.VSub_Number 3) <' '> ($ Id.VSub_DollarName CMD) <'; '> ($ Id.VSub_Number 4) <' '> 
                                                    ($ Id.VSub_DollarName CMD)
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      }
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_DollarName got)}
                              right: {($ Id.VSub_DollarName exp)}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <err_exit>
                          more_env: []
                          words: [
                            {<err_exit>}
                            {
                              (DQ <'[ \''> ($ Id.VSub_Number 2) <'\'  \''> ($ Id.VSub_Number 3) 
                                <'\'  \''> ($ Id.VSub_Number 4) <'\' ] env sequence failed -- expected \''> ($ Id.VSub_DollarName exp) 
                                <'\', got \''> ($ Id.VSub_DollarName got) <'\''>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>} {<4>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<v>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-H>} {<Id.Lit_VarLike 'v='> <'/dev/null'>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName v)}
              right: {<Id.Lit_Other '*'> <nul> <Id.Lit_Other '*'>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -H for /dev/null not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<x>}] redirects:[] do_fork:T)
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<Id.Lit_Other '+'> <C>} {<x>}]
              redirects: []
              do_fork: T
            )
          right: <Id.Right_Subshell _>
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset +C should be an error'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<Id.Lit_Other '+'> <A>} {<x>}]
              redirects: []
              do_fork: T
            )
          right: <Id.Right_Subshell _>
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset +A should be an error'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<Id.Lit_Other '+'> <a>} {<x>}]
              redirects: []
              do_fork: T
            )
          right: <Id.Right_Subshell _>
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset +a should be an error'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<x>}] redirects:[] do_fork:T)
    (BraceGroup
      left: <Id.Lit_LBrace '{'>
      children: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'x='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'x='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <Id.VSub_DollarName '$SHELL'>
                        more_env: []
                        words: [
                          {($ Id.VSub_DollarName SHELL)}
                          {<-c>}
                          {(SQ <'integer -s x=5;print -r -- $x'>)}
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          ]
          redirects: []
        )
      ]
      redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      right: <Id.Lit_RBrace '}'>
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {<5>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'integer -s not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-l>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<Id.Lit_Other '*'> <namespace> <Id.Lit_Other '*'> <.sh> <Id.Lit_Other '*'>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -l should not contain namespace .sh'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<got>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-u>} {<got>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'exp='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'exp='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp)
          op: assign_op.Equal
          rhs: {<100>}
        )
      ]
      redirects: []
    )
    (command.DParen
      left: <Id.Op_DLeftParen _>
      child: 
        (arith_expr.BinaryAssign
          op_id: Id.Arith_Equal
          left: ($ Id.Lit_ArithVarLike got)
          right: {($ Id.VSub_DollarName exp)}
        )
      right: <Id.Op_DRightParen _>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName got)}
              right: {($ Id.VSub_DollarName exp)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [
            {<err_exit>}
            {
              (DQ <'typeset -l fails on numeric value -- expected \''> ($ Id.VSub_DollarName exp) 
                <'\', got \''> ($ Id.VSub_DollarName got) <'\''>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<s>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [
        {<typeset>}
        {<-a>}
        {<-u>}
        {<Id.Lit_VarLike 's='> 
          (ShArrayLiteral
            left: <Id.Op_LParen _>
            words: [{<hello>} {<world>} {<chicken>}]
            right: <Id.Right_ShArrayLiteral _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name s>
                    var_name: s
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              right: {<CHICKEN>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -u not working with indexed arrays'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<s>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [
        {<typeset>}
        {<-A>}
        {<-u>}
        {<Id.Lit_VarLike 's='> 
          (word_part.BashAssocLiteral
            left: <Id.Op_LParen _>
            pairs: [
              (AssocPair key:{<1>} value:{<hello>})
              (AssocPair key:{<0>} value:{<world>})
              (AssocPair key:{<2>} value:{<chicken>})
            ]
            right: <Id.Right_ShArrayLiteral _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name s>
                    var_name: s
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              right: {<CHICKEN>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -u not working with associative arrays'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'expected='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'expected='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expected='> name:expected)
          op: assign_op.Equal
          rhs: 
            {
              (SingleQuoted
                left: <Id.Left_DollarSingleQuote '$\''>
                tokens: [
                  <Id.Char_Literals '('>
                  <Id.Char_OneChar '\\n'>
                  <Id.Char_OneChar '\\t'>
                  <Id.Char_Literals '[0]=WORLD'>
                  <Id.Char_OneChar '\\n'>
                  <Id.Char_OneChar '\\t'>
                  <Id.Char_Literals '[1]=HELLO'>
                  <Id.Char_OneChar '\\n'>
                  <Id.Char_OneChar '\\t'>
                  <Id.Char_Literals '[2]=CHICKEN'>
                  <Id.Char_OneChar '\\n'>
                  <Id.Char_Literals ')'>
                ]
                right: <Id.Right_SingleQuote '\''>
              )
            }
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <print>
                        more_env: []
                        words: [{<print>} {<-v>} {<s>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName expected))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -u for associative array does not display correctly'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<s>}] redirects:[] do_fork:T)
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <command>
                  more_env: []
                  words: [{<command>} {<typeset>} {<-M>} {<totitle>} {<s>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <typeset>
                                more_env: []
                                words: [{<typeset>} {<Id.Lit_Other '+'> <p>} {<s>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'typeset -M totitle s'>)}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <err_exit>
                  more_env: []
                  words: [
                    {<err_exit>}
                    {(SQ <'typeset -M totitle does not display correctly with typeset -p'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          spids: [3831 3847]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (BraceGroup
      left: <Id.Lit_LBrace '{'>
      children: [
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$SHELL'>
          more_env: []
          words: [{($ Id.VSub_DollarName SHELL)}]
          redirects: [
            (Redir
              op: <Id.Redir_DLessDash '<<-'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
                  here_end_tok: <Id.Undefined_Tok ''>
                  stdin_parts: [
                    <'compound -a a1\n'>
                    <'for ((i=1 ; i < 100 ; i++ ))\n'>
                    <'        do\t[[ "$( typeset + a1[$i] )" == \'\' ]] && a1[$i].text=\'hello\'\n'>
                    <'done\n'>
                    <'[[ ${a1[70].text} == hello ]]\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
      ]
      redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      right: <Id.Lit_RBrace '}'>
    )
    (command.AndOr
      children: [
        (command.DParen
          left: <Id.Op_DLeftParen _>
          child: {($ Id.VSub_QMark '?')}
          right: <Id.Op_DRightParen _>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset + a[i] not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<Id.Lit_VarLike 'groupDB='> (DQ )} {<Id.Lit_VarLike 'userDB='> (DQ )}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-l>} {<-L1>} {<Id.Lit_VarLike 'DBPick='> (DQ )}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{(DQ ($ Id.VSub_DollarName groupDB))})
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -l -L1 causes unwanted side effect'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'HISTFILE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'HISTFILE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HISTFILE='> name:HISTFILE)
          op: assign_op.Equal
          rhs: {<foo>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-u>} {<Id.Lit_VarLike 'PS1='> (SQ <'hello --- '>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'HISTFILE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'HISTFILE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HISTFILE='> name:HISTFILE)
          op: assign_op.Equal
          rhs: {<foo>}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName HISTFILE)}
              right: {<foo>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -u PS1 affects HISTFILE'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [
        {<typeset>}
        {<-a>}
        {<Id.Lit_VarLike 'a='> 
          (ShArrayLiteral
            left: <Id.Op_LParen _>
            words: [
              {<Id.Lit_VarLike 'aA='>}
              {<Id.Lit_VarLike 'ZQ='>}
              {<Id.Lit_VarLike 'bA='>}
              {<Id.Lit_VarLike 'bA='>}
              {<Id.Lit_VarLike 'bw='>}
              {<Id.Lit_VarLike 'Cg='>}
            ]
            right: <Id.Right_ShArrayLiteral _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-b>} {<x>}]
      redirects: []
      do_fork: T
    )
    (command.ForExpr
      keyword: <Id.KW_For for>
      init: 
        (arith_expr.BinaryAssign
          op_id: Id.Arith_Equal
          left: ($ Id.Lit_ArithVarLike i)
          right: {<Id.Lit_Digits 0>}
        )
      cond: 
        (arith_expr.Binary
          op_id: Id.Arith_Less
          left: ($ Id.Lit_ArithVarLike i)
          right: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name a>
                var_name: a
                prefix_op: <Id.VSub_Pound '#'>
                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'x+='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'x+='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x+='> name:x)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name a>
                          var_name: a
                          bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i))
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <printf>
                        more_env: []
                        words: [{<printf>} {(DQ <'%B'>)} {<x>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<hello>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [
            {<err_exit>}
            {
              (DQ <'append for typeset -b not working: got \''> 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [{<printf>} {(DQ <'%B'>)} {<x>}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                ) <'\' should get hello'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.CommandList
              children: [
                (command.Simple
                  blame_tok: <trap>
                  more_env: []
                  words: [{<trap>} {(SQ <'exit $?'>)} {<EXIT>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$SHELL'>
                  more_env: []
                  words: [
                    {($ Id.VSub_DollarName SHELL)}
                    {<-c>}
                    {(SQ <'typeset v=foo; [[ $(typeset -p v[0]) == v=foo ]]'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          right: <Id.Right_Subshell _>
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -p v[0] not working for simple variable v'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<x>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'expected='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'expected='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expected='> name:expected)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -a x=(a\\=3 b\\=4)'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [
        {<typeset>}
        {<-a>}
        {<Id.Lit_VarLike 'x='> 
          (ShArrayLiteral
            left: <Id.Op_LParen _>
            words: [{<Id.Lit_VarLike 'a='> <3>} {<Id.Lit_VarLike 'b='> <4>}]
            right: <Id.Right_ShArrayLiteral _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<x>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName expected))}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'assignment elements in typeset -a assignment not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<z>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'z='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'z='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -a q=(a b c)'>)}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$SHELL'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName SHELL)}
            {<-c>}
            {
              (DQ ($ Id.VSub_DollarName z) <'; [[ '> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'(typeset -pa) == \''> ($ Id.VSub_DollarName z) <'\' ]]'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -pa does not list only index arrays'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'z='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'z='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -C z=(foo=bar)'>)}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$SHELL'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName SHELL)}
            {<-c>}
            {
              (DQ ($ Id.VSub_DollarName z) <'; [[ '> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'(typeset -pC) == \''> ($ Id.VSub_DollarName z) <'\' ]]'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -pC does not list only compound variables'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<y>}] redirects:[] do_fork:T)
    (command.ShAssignment
      left: <Id.Lit_VarLike 'z='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'z='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -A y=([a]=foo)'>)}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$SHELL'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName SHELL)}
            {<-c>}
            {
              (DQ ($ Id.VSub_DollarName z) <'; [[ '> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'(typeset -pA) == \''> ($ Id.VSub_DollarName z) <'\' ]]'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -pA does not list only associative arrays'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$SHELL'>
          more_env: []
          words: [{($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'typeset -C arr=( aa bb cc dd )'>)}]
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'invalid compound variable assignment not reported'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<x>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-l>} {<Id.Lit_VarLike 'x='>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name x>
                    var_name: x
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonEquals _> arg_word:{<foo>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              right: {<foo>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'${x:=foo} with x unset, not foo when x is a lowercase variable'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<x>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [
        {<typeset>}
        {<-L4>}
        {<Id.Lit_VarLike 'x='> 
          (SingleQuoted
            left: <Id.Left_DollarSingleQuote '$\''>
            tokens: [<Id.Char_Octal3 '\\001'> <Id.Char_Literals abcdef>]
            right: <Id.Right_SingleQuote '\''>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name x>
                    var_name: x
                    prefix_op: <Id.VSub_Pound '#'>
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              right: {<5>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [
            {<err_exit>}
            {(DQ <'width of character \''> <Id.Lit_BadBackslash '\\'> <'01\' is not zero'>)}
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<x>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-L>} {<Id.Lit_VarLike 'x='> <-1>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <command>
          more_env: []
          words: [{<command>} {<typeset>} {<-F>} {<Id.Lit_VarLike 'x='> <0-1>}]
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'typeset -F after typeset -L fails'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<val>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-i>} {<Id.Lit_VarLike 'val='> <10> <Id.Lit_Pound '#'> <0-3>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-Z>} {<Id.Lit_VarLike 'val='> <0-1>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName val)}
              right: {<0-1>}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'integer attribute not cleared for subsequent typeset'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple blame_tok:<unset> more_env:[] words:[{<unset>} {<x>}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-L>} {<-Z>} {<Id.Lit_VarLike 'x='> <foo>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<x>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(SQ <'typeset -Z 3 -L 3 x=foo'>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'-LRZ without [n] not defaulting to width of variable'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <typeset>
      more_env: []
      words: [{<typeset>} {<-Z2>} {<Id.Lit_VarLike 'foo='> <3>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<foo>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(SQ <'typeset -Z 2 -R 2 foo=03'>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'-Z2  not working'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <export>
      more_env: []
      words: [{<export>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.DBracket
          left: <Id.KW_DLeftBracket '[['>
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <typeset>
                        more_env: []
                        words: [{<typeset>} {<-p>} {<foo>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(SQ <'typeset -x -Z 2 -R 2 foo=03'>)}
            )
          right: <Id.Lit_DRightBracket ']]'>
          redirects: []
        )
        (command.Simple
          blame_tok: <err_exit>
          more_env: []
          words: [{<err_exit>} {(SQ <'-Z2  not working after export'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ControlFlow
      keyword: <Id.ControlFlow_Exit exit>
      arg_word: 
        {
          (word_part.ArithSub
            left: <Id.Left_DollarDParen '$(('>
            anode: 
              (arith_expr.TernaryOp
                cond: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Less
                    left: ($ Id.Lit_ArithVarLike Errors)
                    right: {<Id.Lit_Digits 125>}
                  )
                true_expr: ($ Id.Lit_ArithVarLike Errors)
                false_expr: {<Id.Lit_Digits 125>}
              )
            right: <Id.Right_DollarDParen _>
          )
        }
    )
  ]
)