(command.CommandList
  children: [
    (command.ShFunction
      name: err_exit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<print>} {<-u2>} {<-n>} {(DQ <Id.Lit_BadBackslash '\\'> <t>)})
            (C {<print>} {<-u2>} {<-r>} 
              {(${ Id.VSub_Name Command) <Id.Lit_LBracket '['> ($ Id.VSub_Number 1) 
                <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'>
              } 
              {
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_At '@'>
                    var_name: '@'
                    suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>})
                    right: <Id.Arith_RBrace _>
                  )
                )
              }
            )
            (C {<let>} {<Id.Lit_VarLike 'Errors+='> <1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (C {<alias>} {<Id.Lit_VarLike 'err_exit='> (SQ <'err_exit $LINENO'>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Command='> name:Command)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                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 '}'>
              )
            }
          spids: [114]
        )
      ]
      redirects: []
    )
    (C {<integer>} {<Id.Lit_VarLike 'Errors='> <0>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp='> name:tmp)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<mktemp>} {<-dt>})
                    right: <Id.Eof_RParen _>
                  )
                }
              spids: [128]
            )
          ]
          redirects: []
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: (C {<err_exit>} {<mktemp>} {<-dt>} {<failed>})
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
      ]
    )
    (C {<trap>} {(DQ <'cd /; rm -rf '> ($ Id.VSub_DollarName tmp))} {<EXIT>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
          op: assign_op.Equal
          rhs: {<readonly>}
          spids: [165]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u='> name:u)
          op: assign_op.Equal
          rhs: {<Uppercase>}
          spids: [168]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'l='> name:l)
          op: assign_op.Equal
          rhs: {<Lowercase>}
          spids: [171]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
          op: assign_op.Equal
          rhs: {<22>}
          spids: [174]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i8='> name:i8)
          op: assign_op.Equal
          rhs: {<10>}
          spids: [177]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L)
          op: assign_op.Equal
          rhs: {<abc>}
          spids: [180]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L5='> name:L5)
          op: assign_op.Equal
          rhs: {<def>}
          spids: [183]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uL5='> name:uL5)
          op: assign_op.Equal
          rhs: {<abcdef>}
          spids: [186]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'xi='> name:xi)
          op: assign_op.Equal
          rhs: {<20>}
          spids: [189]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {<export>}
          spids: [192]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t)
          op: assign_op.Equal
          rhs: {<tagged>}
          spids: [195]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'H='> name:H)
          op: assign_op.Equal
          rhs: {<hostname>}
          spids: [198]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LZ5='> name:LZ5)
          op: assign_op.Equal
          rhs: {<026>}
          spids: [201]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RZ5='> name:RZ5)
          op: assign_op.Equal
          rhs: {<026>}
          spids: [204]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Z5='> name:Z5)
          op: assign_op.Equal
          rhs: {<123>}
          spids: [207]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lR5='> name:lR5)
          op: assign_op.Equal
          rhs: {<ABcdef>}
          spids: [210]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'R5='> name:R5)
          op: assign_op.Equal
          rhs: {<def>}
          spids: [213]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
          op: assign_op.Equal
          rhs: {<l>}
          spids: [216]
        )
      ]
      redirects: []
    )
    (command.ForEach
      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
          children: [
            (C {<typeset>} {<-> ($ Id.VSub_DollarName option)} {($ Id.VSub_DollarName option)})
          ]
        )
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Subshell
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r)
                  op: assign_op.Equal
                  rhs: {<newval>}
                  spids: [273]
                )
              ]
              redirects: []
            )
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (C {<err_exit>} {<readonly>} {<attribute>} {<fails>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
          op: assign_op.Equal
          rhs: {<i> <Id.Lit_Other '+'> <5>}
          spids: [291]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: ($ Id.Lit_ArithVarLike i)
                      right: {<Id.Lit_Digits 27>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<integer>} {<attributes>} {<fails>})]
          spids: [296 307]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName i8)}
                      right: {<8> <Id.Lit_Pound '#'> <12>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<integer>} {<base>} {<8>} {<fails>})]
          spids: [319 333]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName u)}
                      right: {<UPPERCASE>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<uppercase>} {<fails>})]
          spids: [347 359]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName l)}
                      right: {<lowercase>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<lowercase>} {<fails>})]
          spids: [369 381]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName n)}
                      right: {<lowercase>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<reference>} {<variables>} {<fail>})]
          spids: [391 403]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {<t> <Id.BoolBinary_GlobEqual '='> <tagged>}
                      right: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<typeset>} {<-t>})
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<tagged>} {<fails>})]
          spids: [415 433]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {<t>}
                      right: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<typeset>} {<Id.Lit_Other '+'> <t>})
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<tagged>} {<fails>})]
          spids: [443 460]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName Z5)}
                      right: {<00123>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<zerofill>} {<fails>})]
          spids: [470 482]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName RZ5)}
                      right: {<00026>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<right>} {<zerofill>} {<fails>})]
          spids: [492 504]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L)
          op: assign_op.Equal
          rhs: {<12345>}
          spids: [516]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName L)}
                      right: {<123>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<leftjust>} {<fails>})]
          spids: [519 531]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName L5)}
                      right: {(DQ <'def  '>)}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<leftjust>} {<fails>})]
          spids: [541 555]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName uL5)}
                      right: {<ABCDE>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<leftjust>} {<uppercase>} {<fails>})]
          spids: [565 577]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName lR5)}
                      right: {<bcdef>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<rightjust>} {<fails>})]
          spids: [589 601]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName R5)}
                      right: {(DQ <'  def'>)}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<rightjust>} {<fails>})]
          spids: [611 625]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'echo $x'>)})
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<export>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<export>} {<fails>})]
          spids: [635 655]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'xi=xi+4;echo $xi'>)})
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<24>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {<export>} {<attributes>} {<fails>})]
          spids: [665 685]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    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_span_id: 714
                            stdin_parts: [
                              <'\tfoo=bar\n'>
                              <'\t'>
                              ($ Id.VSub_DollarName SHELL)
                              <' -c  \'print '>
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\$'>
                                ch: '$'
                              )
                              <'foo\'\n'>
                            ]
                          )
                      )
                    ]
                    more_env: [(env_pair name:foo val:{<abc>} spids:[699])]
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
          spids: [697]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName x)}
                      right: {<bar>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'environment variables require re-export'>)})]
          spids: [717 729]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Subshell
          child: (C {<typeset>} {<Id.Lit_Other '+'>})
          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>})
          ]
        )
        (C {<err_exit>} {(SQ <'typeset + not working'>)})
      ]
    )
    (command.Subshell
      child: 
        (command.Simple
          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'>})]
          more_env: []
          do_fork: T
        )
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {($ Id.VSub_QMark '?')}
                      right: {<0>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'typeset allows negative field for left/right adjust'>)})]
          spids: [775 787]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a)
          op: assign_op.Equal
          rhs: {<b>}
          spids: [797]
        )
      ]
      redirects: []
    )
    (C {<readonly>} {($ Id.VSub_DollarName a) <Id.Lit_Equals '='> <foo>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName b)}
                      right: {<foo>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'readonly $a=b not working'>)})]
          spids: [806 818]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [(C {<export>}) (C {<grep>} {(SQ <'^PATH='>)})]
                                negated: F
                                stderr_indices: []
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<PATH> <Id.BoolBinary_GlobEqual '='> <Id.Lit_Other '*'>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'export not working'>)})]
          spids: [828 852]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'picture='> name:picture)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {<Id.Lit_VarLike 'bitmap='> <'/fruit'>}
                  {<Id.Lit_VarLike 'size='> 
                    (sh_array_literal
                      left: <Id.Op_LParen _>
                      words: [{<typeset>} {<-E>} {<Id.Lit_VarLike 'x='> <2.5>}]
                    )
                  }
                ]
              )
            }
          spids: [862]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'string='> name:string)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<print>} {($ Id.VSub_DollarName picture)})
                  right: <Id.Eof_RParen _>
                )
              )
            }
          spids: [882]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  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 '*'>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'print of compound exponential variable not working'>)})]
          spids: [891 911]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sz='> name:sz)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [{<typeset>} {<-E>} {<Id.Lit_VarLike 'y='> <2.2>}]
              )
            }
          spids: [921]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'string='> name:string)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<print>} {($ Id.VSub_DollarName sz)})
                  right: <Id.Eof_RParen _>
                )
              )
            }
          spids: [931]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  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 '*'>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'print of exponential shows both -E and -F attributes'>)})]
          spids: [940 960]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.Simple
      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'>}
        )
      ]
      more_env: []
      do_fork: T
    )
    (C {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName tmp) <'/script'>})
    (C {<typeset>} {<-Z2>} {<m>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {($ Id.VSub_DollarName tmp) <'/script'>})
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<13>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'attributes not cleared for script execution'>)})]
          spids: [995 1010]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.Simple
      words: [{<print>} {(SQ <'print VAR=$VAR'>)}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName tmp) <'/script'>}
        )
      ]
      more_env: []
      do_fork: T
    )
    (C {<typeset>} {<-L70>} {<Id.Lit_VarLike 'VAR='> <Id.KW_Var var>})
    (command.Simple
      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'>}
        )
      ]
      more_env: []
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        words: []
                        redirects: [
                          (redir
                            op: <Id.Redir_Less '<'>
                            loc: (redir_loc.Fd fd:0)
                            arg: {($ Id.VSub_DollarName tmp) <'/script.1'>}
                          )
                        ]
                        more_env: []
                        do_fork: F
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<VAR> <Id.BoolBinary_GlobEqual '='>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -L should not be inherited'>)})
      ]
    )
    (C {<typeset>} {<-Z>} {<Id.Lit_VarLike 'LAST='> <00>})
    (C {<unset>} {<-f>} {<foo>})
    (command.ShFunction
      name: foo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: (bool_expr.WordTest w:{($ Id.VSub_Number 1)})
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LAST='> name:LAST)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                          spids: [1101]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1090 1099]
                )
              ]
              else_action: [
                (command.DParen
                  child: 
                    (arith_expr.UnaryAssign
                      op_id: Id.Node_PostDPlus
                      child: ($ Id.Lit_ArithVarLike LAST)
                    )
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (C {<foo>} {<1>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: 
                        {
                          (braced_var_sub
                            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>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'LAST!=2'>)})]
          spids: [1122 1138]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<foo>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: 
                        {
                          (braced_var_sub
                            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>}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'LAST!=2'>)})]
          spids: [1150 1166]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [(C {<set>}) (C {<grep>} {<LAST>})]
                        negated: F
                        stderr_indices: []
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<LAST> <Id.BoolBinary_GlobEqual '='> <02>}
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'LAST not correct in set list'>)})
      ]
    )
    (C {<set>} {<-a>})
    (C {<unset>} {<foo>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'foo='> name:foo)
          op: assign_op.Equal
          rhs: {<bar>}
          spids: [1212]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<export>})
                                  (C {<grep>} {<Id.Lit_Other '^'> <Id.Lit_VarLike 'foo='>})
                                ]
                                negated: F
                                stderr_indices: []
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'foo=bar'>)}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'all export not working'>)})]
          spids: [1215 1238]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<unset>} {<foo>})
    (command.Simple
      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_span_id: 1261
              stdin_parts: [<'bar\n'>]
            )
        )
      ]
      more_env: []
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<export>})
                                  (C {<grep>} {<Id.Lit_Other '^'> <Id.Lit_VarLike 'foo='>})
                                ]
                                negated: F
                                stderr_indices: []
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {(SQ <'foo=bar'>)}
                    )
                  redirects: []
                )
              ]
            )
          action: [(C {<err_exit>} {(SQ <'all export not working with read'>)})]
          spids: [1262 1285]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [(C {<typeset>}) (C {<grep>} {<PS2>})]
                                negated: F
                                stderr_indices: []
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<PS2>}
                    )
                  redirects: []
                )
              ]
            )
          action: [
            (C {<err_exit>} {(SQ <'typeset without arguments outputs names without attributes'>)})
          ]
          spids: [1295 1315]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<unset>} {<a>} {<z>} {<q>} {<x>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w1='> name:w1)
          op: assign_op.Equal
          rhs: {<hello>}
          spids: [1335]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w2='> name:w2)
          op: assign_op.Equal
          rhs: {<world>}
          spids: [1338]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          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))}
          spids: [1341]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DEqual
                      left: {(SQ <a>)}
                      right: {<Id.Lit_Digits 97>}
                    )
                  redirects: []
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b1='> name:b1)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_VarLike 'aGVsbG8gd29ybGQ='>}
                  spids: [1365]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b2='> name:b2)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_VarLike 'aGVsbG8gd29ybGRoZWxsbyB3b3JsZA='> <Id.Lit_Equals '='>}
                  spids: [1369]
                )
              ]
              redirects: []
            )
          ]
          spids: [1348 1363]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b1='> name:b1)
              op: assign_op.Equal
              rhs: {<Id.Lit_VarLike 'iIWTk5ZAppaZk4Q='>}
              spids: [1375]
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b2='> name:b2)
              op: assign_op.Equal
              rhs: {<Id.Lit_VarLike 'iIWTk5ZAppaZk4SIhZOTlkCmlpmThA='> <Id.Lit_Equals '='>}
              spids: [1379]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName b1)}
          spids: [1385]
        )
      ]
      redirects: []
    )
    (C {<typeset>} {<-b>} {<Id.Lit_VarLike 'x='> ($ Id.VSub_DollarName b1)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {(DQ ($ Id.VSub_DollarName z))}
            )
          redirects: []
        )
        (C {<print>} {<-u2>} {(SQ <'binary variable not expanding correctly'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<printf>} {(DQ <'%B'>)} {<x>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {($ Id.VSub_DollarName t1)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -b not working'>)})
      ]
    )
    (C {<typeset>} {<-b>} {<-Z5>} {<Id.Lit_VarLike 'a='> ($ Id.VSub_DollarName b1)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<printf>} {(DQ <'%B'>)} {<a>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {($ Id.VSub_DollarName w1)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -b -Z5 not working'>)})
      ]
    )
    (C {<typeset>} {<-b>} {<Id.Lit_VarLike 'q='> ($ Id.VSub_DollarName x) ($ Id.VSub_DollarName x)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName q)}
              right: {($ Id.VSub_DollarName b2)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -b not working with concatination'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<printf>} {(DQ <'%B'>)} {<q>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {($ Id.VSub_DollarName t1) ($ Id.VSub_DollarName t1)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -b concatination not working'>)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x+='> name:x)
          op: assign_op.PlusEqual
          rhs: {($ Id.VSub_DollarName b1)}
          spids: [1531]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {($ Id.VSub_DollarName b2)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -b not working with append'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<printf>} {(DQ <'%B'>)} {<x>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {($ Id.VSub_DollarName t1) ($ Id.VSub_DollarName t1)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -b append not working'>)})
      ]
    )
    (C {<typeset>} {<-b>} {<-Z20>} {<Id.Lit_VarLike 'z='> ($ Id.VSub_DollarName b1)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DParen
          child: 
            (arith_expr.Binary
              op_id: Id.Arith_DEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [(C {<printf>} {(DQ <'%B'>)} {<z>}) (C {<wc>} {<-c>})]
                        negated: F
                        stderr_indices: []
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<Id.Lit_Digits 20>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -b -Z20 not storing 20 bytes'>)})
      ]
    )
    (BraceGroup
      left: <Id.Lit_LBrace '{'>
      children: [
        (C {<typeset>} {<-b>} {<v1>} {<v2>})
        (C {<read>} {<-N11>} {<v1>})
        (C {<read>} {<-N22>} {<v2>})
      ]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<Id.KW_Bang '!'>}
              here_end_span_id: 1654
              stdin_parts: [<'hello worldhello worldhello world\n'>]
            )
        )
      ]
      right: <Id.Lit_RBrace '}'>
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName v1)}
              right: {(DQ ($ Id.VSub_DollarName b1))}
            )
          redirects: []
        )
        (C {<err_exit>} 
          {(DQ <'v1='> ($ Id.VSub_DollarName v1) <' should be '> ($ Id.VSub_DollarName b1))}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName v2)}
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          redirects: []
        )
        (C {<err_exit>} 
          {(DQ <'v1='> ($ Id.VSub_DollarName v2) <' should be '> ($ Id.VSub_DollarName x))}
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  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>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
          action: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                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'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      right: {<ok>}
                    )
                  redirects: []
                )
                (C {<err_exit>} {(SQ <'malformed environment terminates shell'>)})
              ]
            )
          ]
          spids: [1701 1715]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<unset>} {<Id.KW_Var var>})
    (C {<typeset>} {<-b>} {<Id.KW_Var var>})
    (command.Pipeline
      children: [(C {<printf>} {(SQ <'12%Z34'>)}) (C {<read>} {<-r>} {<-N>} {<5>} {<Id.KW_Var var>})]
      negated: F
      stderr_indices: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName var)}
              right: {<MTIAMzQ> <Id.BoolBinary_GlobEqual '='>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'binary files with zeros not working'>)})
      ]
    )
    (C {<unset>} {<Id.KW_Var var>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  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'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
          action: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DEqual
                      left: {($ Id.VSub_DollarName var)}
                      right: {<Id.Lit_Digits 0> <Id.Lit_ArithVarLike xffff>}
                    )
                  redirects: []
                )
                (C {<err_exit>} {(SQ <'unsigned short integers not working'>)})
              ]
            )
          ]
          spids: [1805 1820]
        )
      ]
      else_action: [(C {<err_exit>} {(SQ <'typeset -usi cannot be used for unsigned short'>)})]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        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'>}
                          )
                        ]
                        more_env: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<3>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'${foo:-3} not 3 when typeset -Z2 field undefined'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        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'>}
                          )
                        ]
                        more_env: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<03>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'${foo:=-3} not 3 when typeset -Z2 foo undefined'>)})
      ]
    )
    (C {<unset>} {<foo>} {<bar>})
    (C {<unset>} {<-f>} {<fun>})
    (command.ShFunction
      name: fun
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<export>} {<Id.Lit_VarLike 'foo='> <hello>})
            (C {<typeset>} {<-x>} {<Id.Lit_VarLike 'bar='> <world>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {($ Id.VSub_DollarName foo)}
                      right: {<hello>}
                    )
                  redirects: []
                )
                (C {<err_exit>} {(SQ <'export scoping problem in function'>)})
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (C {<fun>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [(C {<export>}) (C {<grep>} {<foo>})]
                        negated: F
                        stderr_indices: []
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(SQ <'foo=hello'>)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'export not working in functions'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.WordTest
              w: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [(C {<export>}) (C {<grep>} {<bar>})]
                        negated: F
                        stderr_indices: []
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -x not local'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        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'>}
                          )
                        ]
                        more_env: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<pwd>})
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'readonly IFS causes command substitution to fail'>)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.IndexedName
              left: <Id.Lit_ArrayLhsOpen 'fred['>
              name: fred
              index: {<Id.Lit_Digits 66>}
            )
          op: assign_op.Equal
          rhs: {<88>}
          spids: [2051]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-pa>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<Id.Lit_Other '*'> <fred> <Id.Lit_Other '*'>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -pa not working'>)})
      ]
    )
    (C {<unset>} {<x>} {<y>} {<z>})
    (C {<typeset>} {<-LZ3>} {<Id.Lit_VarLike 'x='> <abcd>} {<y>} {<Id.Lit_VarLike 'z='> <00abcd>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y)
          op: assign_op.Equal
          rhs: {<03>}
          spids: [2102]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName y)}
              right: {(DQ <'3  '>)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'-LZ3 not working for value 03'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {(DQ <abc>)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'-LZ3 not working for value abcd'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName x)}
              right: {(DQ <abc>)}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'-LZ3 not working for value 00abcd'>)})
      ]
    )
    (C {<unset>} {<x>} {<z>})
    (C {<set>} {<Id.Lit_Other '+'> <a>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.WordTest
              w: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset -p for z undefined failed'>)})
      ]
    )
    (C {<unset>} {<z>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -i z=45'>)}
          spids: [2200]
        )
      ]
      redirects: []
    )
    (C {<eval>} {(DQ ($ Id.VSub_DollarName x))})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (braced_var_sub
                      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 '}'>
                    )
                  )
                }
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (C {<unset>} {<z>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -a z=(a b c)'>)}
          spids: [2277]
        )
      ]
      redirects: []
    )
    (C {<eval>} {(DQ ($ Id.VSub_DollarName x))})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (braced_var_sub
                      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 '}'>
                    )
                  )
                }
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (C {<unset>} {<z>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          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'> <')'>)}
          spids: [2354]
        )
      ]
      redirects: []
    )
    (C {<eval>} {(DQ ($ Id.VSub_DollarName x))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (single_quoted
                          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 '}'>
              )
            }
          spids: [2368]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (single_quoted
                          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 '}'>
              )
            }
          spids: [2378]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (single_quoted
                          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 '}'>
              )
            }
          spids: [2393]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (braced_var_sub
                      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 '}'>
                    )
                  )
                }
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (C {<unset>} {<z>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          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)'>)}
          spids: [2473]
        )
      ]
      redirects: []
    )
    (C {<eval>} {(DQ ($ Id.VSub_DollarName x))})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (braced_var_sub
                      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 '}'>
                    )
                  )
                }
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (C {<unset>} {<z>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'foo='> name:foo)
          op: assign_op.Equal
          rhs: {<abc>}
          spids: [2550]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: {(SQ <'typeset -n z=foo'>)}
          spids: [2553]
        )
      ]
      redirects: []
    )
    (C {<eval>} {(DQ ($ Id.VSub_DollarName x))})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ ($ Id.VSub_DollarName x))}
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset -p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: 
                {
                  (DQ 
                    (braced_var_sub
                      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 '}'>
                    )
                  )
                }
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset +p for \''> ($ Id.VSub_DollarName x) <'\' failed'>)})
      ]
    )
    (C {<typeset>} {<Id.Lit_Other '+'> <n>} {<z>})
    (C {<unset>} {<foo>} {<z>})
    (C {<typeset>} {<-T>} 
      {<Id.Lit_VarLike 'Pt_t='> 
        (sh_array_literal
          left: <Id.Op_LParen _>
          words: [{<float>} {<Id.Lit_VarLike 'x='> <1>} {<Id.Lit_VarLike 'y='> <2>}]
        )
      }
    )
    (C {<Pt_t>} {<z>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name z>
                var_name: z
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (single_quoted
                          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 '}'>
              )
            }
          spids: [2661]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (single_quoted
                          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 '}'>
              )
            }
          spids: [2671]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name x>
                var_name: x
                suffix_op: 
                  (suffix_op.PatSub
                    pat: 
                      {
                        (single_quoted
                          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 '}'>
              )
            }
          spids: [2686]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ <'Pt_t z='> ($ Id.VSub_DollarName x))}
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset -p for type failed'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<Id.Lit_Other '+'> <p>} {<z>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(DQ <'Pt_t z'>)}
            )
          redirects: []
        )
        (C {<err_exit>} {(DQ <'typeset +p for type failed'>)})
      ]
    )
    (C {<unset>} {<z>})
    (command.ShFunction
      name: foo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [(C {<typeset>} {<-p>} {<bar>})]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bar='> name:bar)
          op: assign_op.Equal
          rhs: {<xxx>}
          spids: [2773]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<foo>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<bar> <Id.BoolBinary_GlobEqual '='> <xxx>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -p not working inside a function'>)})
      ]
    )
    (C {<unset>} {<foo>})
    (C {<typeset>} {<-L5>} {<foo>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<typeset>} {<-p>} {<foo>})
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {(SQ <'typeset -L 5 foo'>)}
            )
          redirects: []
        )
        (C {<err_exit>} 
          {(SQ <'typeset -p not working for variables with attributes but without a value'>)}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              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_span_id: 2848
                      stdin_parts: [
                        <'typeset -L3 foo=aaa\n'>
                        <'typeset -L6 foo=bbbbbb\n'>
                        <'[[ '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        )
                        <'foo == bbbbbb ]]\n'>
                      ]
                    )
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
        (C {<err_exit>} {(SQ <'typeset -L should not preserve old attributes'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              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_span_id: 2873
                      stdin_parts: [
                        <'typeset -R3 foo=aaa\n'>
                        <'typeset -R6 foo=bbbbbb\n'>
                        <'[[ '>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        )
                        <'foo == bbbbbb ]]\n'>
                      ]
                    )
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          right: <Id.Lit_RBrace '}'>
        )
        (C {<err_exit>} {(SQ <'typeset -R should not preserve old attributes'>)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expected='> name:expected)
          op: assign_op.Equal
          rhs: {(SQ <'YWJjZGVmZ2hpag=='>)}
          spids: [2889]
        )
      ]
      redirects: []
    )
    (C {<unset>} {<foo>})
    (C {<typeset>} {<-b>} {<-Z10>} {<foo>})
    (command.Simple
      words: [{<read>} {<foo>}]
      redirects: [
        (redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)})
      ]
      more_env: []
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName foo)}
              right: {(DQ ($ Id.VSub_DollarName expected))}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'read foo, where foo is "typeset -b -Z10" not working'>)})
      ]
    )
    (C {<unset>} {<foo>})
    (C {<typeset>} {<-b>} {<-Z10>} {<foo>})
    (command.Simple
      words: [{<read>} {<-N10>} {<foo>}]
      redirects: [
        (redir op:<Id.Redir_TLess '<<<'> loc:(redir_loc.Fd fd:0) arg:{(SQ <abcdefghijklmnop>)})
      ]
      more_env: []
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName foo)}
              right: {(DQ ($ Id.VSub_DollarName expected))}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset -b -Z10" not working'>)})
      ]
    )
    (C {<unset>} {<foo>})
    (C {<typeset>} {<-b>} {<-A>} {<foo>})
    (command.Simple
      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>)})
      ]
      more_env: []
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (braced_var_sub
                    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))}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset  -b -A" foo not working'>)})
      ]
    )
    (C {<unset>} {<foo>})
    (C {<typeset>} {<-b>} {<-a>} {<foo>})
    (command.Simple
      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>)})
      ]
      more_env: []
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (braced_var_sub
                    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))}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'read -N10 foo, where foo is "typeset  -b -a" foo not working'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {<printf>} {<Id.Lit_Other '%'> <B>} 
                        {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>}
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<abcdefghij>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'printf %B for binary associative array element not working'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {<printf>} {<Id.Lit_Other '%'> <B>} 
                        {<Id.Lit_ArrayLhsOpen 'foo['> <4> <Id.Lit_RBracket ']'>}
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              right: {<abcdefghij>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'printf %B for binary indexed array element not working'>)})
      ]
    )
    (C {<unset>} {<foo>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          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'>})]
          more_env: []
          do_fork: T
        )
        (C {<err_exit>} {(SQ <'compound variables cannot be exported'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          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>})
          ]
          more_env: []
          do_fork: T
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SEC='> name:SEC)
                  op: assign_op.Equal
                  rhs: {<1234252800>}
                  spids: [3185]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ETZ='> name:ETZ)
                  op: assign_op.Equal
                  rhs: {<EST5EDT>}
                  spids: [3188]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EDT='> name:EDT)
                  op: assign_op.Equal
                  rhs: {<03>}
                  spids: [3191]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PTZ='> name:PTZ)
                  op: assign_op.Equal
                  rhs: {<PST8PDT>}
                  spids: [3194]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PDT='> name:PDT)
                  op: assign_op.Equal
                  rhs: {<00>}
                  spids: [3197]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  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)
                      )
                    }
                  spids: [3201]
                )
              ]
              redirects: []
            )
            (C {<export>} {<Id.Lit_VarLike 'TZ='> ($ Id.VSub_DollarName ETZ)})
            (C {<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))}
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_GreatEqual
                          left: {($ Id.VSub_Pound '#')}
                          right: {<Id.Lit_Digits 4>}
                        )
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exp='> name:exp)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                          spids: [3378]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'got='> name:got)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<print>} 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {($ 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)
                                              )
                                            }
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [3382]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_DollarName got)}
                              right: {($ Id.VSub_DollarName exp)}
                            )
                          redirects: []
                        )
                        (C {<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) <'\''>
                            )
                          }
                        )
                      ]
                    )
                    (C {<shift>} {<4>})
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
      ]
    )
    (C {<unset>} {<v>})
    (C {<typeset>} {<-H>} {<Id.Lit_VarLike 'v='> <'/dev/null'>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName v)}
              right: {<Id.Lit_Other '*'> <nul> <Id.Lit_Other '*'>}
            )
          redirects: []
        )
        (C {<err_exit>} {(SQ <'typeset -H for /dev/null not working'>)})
      ]
    )
    (command.ControlFlow
      token: <Id.ControlFlow_Exit exit>
      arg_word: {(word_part.ArithSub anode:($ Id.Lit_ArithVarLike Errors))}
    )
  ]
)