(command.CommandList
  children: [
    (command.Simple
      blame_tok: <Id.Lit_Colon ':'>
      more_env: []
      words: [{<Id.Lit_Colon ':'>}]
      redirects: []
      do_fork: T
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: 
        (case_arg.Word
          w: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Subshell
                    left: <Id.Op_LParen _>
                    child: 
                      (command.CommandList
                        children: [
                          (command.Sentence
                            child: 
                              (command.Simple
                                blame_tok: <typeset>
                                more_env: []
                                words: [
                                  {<typeset>}
                                  {<-u>}
                                  {<Id.Lit_VarLike 's='> <a>}
                                  {<Id.Lit_VarLike 'n='> <0>}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            terminator: <Id.Op_Semi _>
                          )
                          (command.Sentence
                            child: 
                              (command.DParen
                                left: <Id.Op_DLeftParen _>
                                child: 
                                  (arith_expr.BinaryAssign
                                    op_id: Id.Arith_Equal
                                    left: ($ Id.Lit_ArithVarLike n)
                                    right: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: ($ Id.Lit_ArithVarLike n)
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                  )
                                right: <Id.Op_DRightParen _>
                                redirects: []
                              )
                            terminator: <Id.Op_Semi _>
                          )
                          (command.Simple
                            blame_tok: <print>
                            more_env: []
                            words: [{<print>} {($ Id.VSub_DollarName s) ($ Id.VSub_DollarName n)}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                      )
                    right: <Id.Right_Subshell _>
                    redirects: [
                      (Redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <A1>
          pattern: (pat.Words words:[{<A1>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'shell='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'shell='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell)
                  op: assign_op.Equal
                  rhs: {<ksh>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<-u>} {<ID>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <typeset>
              more_env: []
              words: [{<typeset>} {<-i>} {<counter>} {<err_line>}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'shell='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'shell='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell='> name:shell)
                  op: assign_op.Equal
                  rhs: {<bsh>}
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'command='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'command='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number 0)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'counter='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'counter='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'counter='> name:counter)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'define='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'define='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'define='> name:define)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'err_line='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'err_line='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err_line='> name:err_line)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'type='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'type='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
          op: assign_op.Equal
          rhs: {(DQ )}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'index='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'index='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index)
          op: assign_op.Equal
          rhs: {(DQ )}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'first='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'first='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first='> name:first)
          op: assign_op.Equal
          rhs: {(DQ )}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'last='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'last='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'last='> name:last)
          op: assign_op.Equal
          rhs: {(DQ )}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'table='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'table='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'table='> name:table)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [{<Id.Lit_Colon ':'>}]
              redirects: []
              do_fork: T
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <-d>
                  pattern: (pat.Words words:[{<-d>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'table='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'table='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'table='> name:table)
                          op: assign_op.Equal
                          rhs: {<0>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-t>
                  pattern: (pat.Words words:[{<-t>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'define='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'define='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'define='> name:define)
                          op: assign_op.Equal
                          rhs: {<0>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ )}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'err_file='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'err_file='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err_file='> name:err_file)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <exec>
              more_env: []
              words: [{<exec>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_Number 1)}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'err_file='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'err_file='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err_file='> name:err_file)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                        ($ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', '>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Simple
              blame_tok: <read>
              more_env: []
              words: [{<read>} {<line>}]
              redirects: []
              do_fork: T
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <ksh>
                  pattern: (pat.Words words:[{<ksh>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike err_line)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: ($ Id.Lit_ArithVarLike err_line)
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'err_line='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'err_line='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err_line='> name:err_line)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <expr>
                                    more_env: []
                                    words: [
                                      {<expr>}
                                      {($ Id.VSub_DollarName err_line)}
                                      {<Id.Lit_Other '+'>}
                                      {<1>}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [{<set>} {(SQ )} {($ Id.VSub_DollarName line)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_LBracket '['>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_LBracket '['> <Id.Lit_Pound '#'> <Id.Lit_RBracket ']'> 
                          <Id.Lit_Star '*'>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'/*'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <Id.Lit_Colon ':'>
                              more_env: []
                              words: [{<Id.Lit_Colon ':'>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Lit_LBracket '['>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_LBracket '['> <Id.Lit_Pound '#'> 
                                          <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                                        }
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <' * '> ($ Id.VSub_Star '*'))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <read>
                                      more_env: []
                                      words: [{<read>} {<line>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <set>
                                      more_env: []
                                      words: [{<set>} {(SQ )} {($ Id.VSub_DollarName line)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <' */'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [{<eval>} {<set>} {(SQ <'""'>)} {($ Id.VSub_DollarName line)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ )}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Other '%'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Other '%'> <flags>}
                        {<Id.Lit_Other '%'> <keywords>}
                        {<Id.Lit_Other '%'> <sequence>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: 
                            {($ Id.VSub_DollarName define) <Id.Lit_Colon ':'> 
                              ($ Id.VSub_DollarName last)
                            }
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <1>
                          pattern: 
                            (pat.Words
                              words: [{<1> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <ksh>
                                  pattern: (pat.Words words:[{<ksh>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.DParen
                                      left: <Id.Op_DLeftParen _>
                                      child: 
                                        (arith_expr.BinaryAssign
                                          op_id: Id.Arith_Equal
                                          left: ($ Id.Lit_ArithVarLike n)
                                          right: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_Minus
                                              left: ($ Id.Lit_ArithVarLike counter)
                                              right: {<Id.Lit_Digits 1>}
                                            )
                                        )
                                      right: <Id.Op_DRightParen _>
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'n='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'n='>
                                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <expr>
                                                    more_env: []
                                                    words: [
                                                      {<expr>}
                                                      {($ Id.VSub_DollarName counter)}
                                                      {<->}
                                                      {<1>}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'#define '> ($ Id.VSub_DollarName prefix) 
                                    ($ Id.VSub_DollarName last) <'\t'> ($ Id.VSub_DollarName n)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Other '%'>
                          pattern: 
                            (pat.Words
                              words: [{<Id.Lit_Other '%'> <flags>} {<Id.Lit_Other '%'> <sequence>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName define)}
                                            {<Id.Lit_Equals '='>}
                                            {<1>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [584 595]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Other '%'>
                          pattern: (pat.Words words:[{<Id.Lit_Other '%'> <keywords>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName table)}
                                            {<Id.Lit_Equals '='>}
                                            {<1>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <'\t0,\t0'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <'};'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [611 622]
                                )
                                (IfArm
                                  keyword: <Id.KW_Elif elif>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName define)}
                                            {<Id.Lit_Equals '='>}
                                            {<1>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [641 652]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName index)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_QMark '?'>
                          pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {($ Id.VSub_DollarName index) <Id.Lit_Equals '='> 
                                  ($ Id.VSub_DollarName counter)
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'type='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'type='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'name='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'prefix='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'prefix='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prefix='> name:prefix)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'index='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'index='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'init='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'init='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'init='> name:init)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'first='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'first='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first='> name:first)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'last='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'last='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'last='> name:last)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Other '%'>
                          pattern: (pat.Words words:[{<Id.Lit_Other '%'> <keywords>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_DoubleQuote '"'>
                                  pattern: (pat.Words words:[{(DQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ ($ Id.VSub_DollarName command) <': '> 
                                            (${ Id.VSub_Name err_file) <'line '> ($ Id.VSub_DollarName err_line) <': '> ($ Id.VSub_DollarName type) <' table name omitted'>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'name='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'name='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName table)}
                                            {<Id.Lit_Equals '='>}
                                            {<1>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName name)) (SQ <'[] ='>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <'{'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [786 797]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName init)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: (pat.Words words:[{(DQ )}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Lit_Other '%'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_Other '%'> <flags>}
                                        {<Id.Lit_Other '%'> <sequence>}
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'init='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'init='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'init='>
                                              name: init
                                            )
                                          op: assign_op.Equal
                                          rhs: {<0>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'init='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'init='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'init='>
                                              name: init
                                            )
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName index)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: (pat.Words words:[{(DQ )}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'counter='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'counter='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'counter='>
                                      name: counter
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName init)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {<Id.Lit_VarLike 'value='> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\$'>
                                    ch: '$'
                                  ) ($ Id.VSub_DollarName index)
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{($ Id.VSub_DollarName value)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_DoubleQuote '"'>
                                  pattern: (pat.Words words:[{(DQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'counter='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'counter='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'counter='>
                                              name: counter
                                            )
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName init)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_LBracket '['>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> 
                                          <Id.Lit_Star '*'>
                                        }
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'counter='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'counter='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'counter='>
                                              name: counter
                                            )
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName value)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: 
                            {($ Id.VSub_DollarName define) <Id.Lit_Colon ':'> 
                              ($ Id.VSub_DollarName first)
                            }
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <1>
                          pattern: 
                            (pat.Words
                              words: [{<1> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'#define '> ($ Id.VSub_DollarName prefix) 
                                    ($ Id.VSub_DollarName first) <'\t'> ($ Id.VSub_DollarName counter)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Other '%'>
                  pattern: (pat.Words words:[{<Id.Lit_Other '%'> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ ($ Id.VSub_DollarName command) <': '> (${ Id.VSub_Name err_file) <'line '> 
                            ($ Id.VSub_DollarName err_line) <': '> ($ Id.VSub_Number 1) <': unknown keyword'>
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <Id.Lit_Colon ':'>
                              more_env: []
                              words: [{<Id.Lit_Colon ':'>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_DoubleQuote '"'>
                                  pattern: (pat.Words words:[{(DQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Case
                                      case_kw: <Id.KW_Case case>
                                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)})
                                      arms_start: <Id.KW_In in>
                                      arms: [
                                        (CaseArm
                                          left: <ksh>
                                          pattern: (pat.Words words:[{<ksh>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'ID='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'ID='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'ID='>
                                                      name: ID
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (BracedVarSub
                                                        left: <Id.Left_DollarBrace '${'>
                                                        token: <Id.VSub_Number 1>
                                                        var_name: 1
                                                        suffix_op: 
                                                          (suffix_op.Unary
                                                            op: <Id.VOp1_Pound '#'>
                                                            arg_word: 
                                                              {<'['> <Id.Lit_Other '!'> 
                                                                <
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]'
                                                                >
                                                              }
                                                          )
                                                        right: <Id.Right_DollarBrace '}'>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <Id.Lit_Star '*'>
                                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'ID='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'ID='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'ID='>
                                                      name: ID
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (CommandSub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Pipeline
                                                            children: [
                                                              (command.Simple
                                                                blame_tok: <echo>
                                                                more_env: []
                                                                words: [{<echo>} {($ Id.VSub_Number 1)}]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                              (command.Simple
                                                                blame_tok: <tr>
                                                                more_env: []
                                                                words: [
                                                                  {<tr>}
                                                                  {<abcdefghijklmnopqrstuvwxyz>}
                                                                  {<ABCDEFGHIJKLMNOPQRSTUVWXYZ>}
                                                                ]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                              (command.Simple
                                                                blame_tok: <sed>
                                                                more_env: []
                                                                words: [
                                                                  {<sed>}
                                                                  {
                                                                    (SQ 
                                                                      <
's/^[^ABCDEFGHIJKLMNOPQRSTUVWXYZ_]//'
                                                                      >
                                                                    )
                                                                  }
                                                                ]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                            ]
                                                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                                          )
                                                        right: <Id.Backtick_Right '`'>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                    (command.Case
                                      case_kw: <Id.KW_Case case>
                                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)})
                                      arms_start: <Id.KW_In in>
                                      arms: [
                                        (CaseArm
                                          left: <Id.Lit_Other '%'>
                                          pattern: (pat.Words words:[{<Id.Lit_Other '%'> <flags>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.If
                                              if_kw: <Id.KW_If if>
                                              arms: [
                                                (IfArm
                                                  keyword: <Id.KW_If if>
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Simple
                                                          blame_tok: <test>
                                                          more_env: []
                                                          words: [
                                                            {<test>}
                                                            {($ Id.VSub_DollarName define)}
                                                            {<Id.Lit_Equals '='>}
                                                            {<1>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                    )
                                                  then_kw: <Id.KW_Then then>
                                                  action: [
                                                    (command.Case
                                                      case_kw: <Id.KW_Case case>
                                                      to_match: 
                                                        (case_arg.Word
                                                          w: {($ Id.VSub_DollarName counter)}
                                                        )
                                                      arms_start: <Id.KW_In in>
                                                      arms: [
                                                        (CaseArm
                                                          left: <32>
                                                          pattern: (pat.Words words:[{<32>}])
                                                          middle: <Id.Right_CasePat _>
                                                          action: [
                                                            (command.Simple
                                                              blame_tok: <echo>
                                                              more_env: []
                                                              words: [
                                                                {<echo>}
                                                                {
                                                                  (DQ ($ Id.VSub_DollarName command) 
                                                                    <': '> (${ Id.VSub_Name err_file) <'line '> ($ Id.VSub_DollarName err_line) <': warning: '> ($ Id.VSub_Number 1) 
                                                                    <': too many flag bits'>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: [
                                                                (Redir
                                                                  op: <Id.Redir_GreatAnd '>&'>
                                                                  loc: (redir_loc.Fd fd:1)
                                                                  arg: {<2>}
                                                                )
                                                              ]
                                                              do_fork: T
                                                            )
                                                          ]
                                                          right: <Id.Op_DSemi _>
                                                        )
                                                        (CaseArm
                                                          left: <1>
                                                          pattern: 
                                                            (pat.Words
                                                              words: [
                                                                {<1> <Id.Lit_LBracket '['> <56789> 
                                                                  <Id.Lit_RBracket ']'>
                                                                }
                                                                {<Id.Lit_LBracket '['> <23> 
                                                                  <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'>
                                                                }
                                                              ]
                                                            )
                                                          middle: <Id.Right_CasePat _>
                                                          action: [
                                                            (command.ShAssignment
                                                              left: <Id.Lit_VarLike 'long='>
                                                              pairs: [
                                                                (AssignPair
                                                                  left: <Id.Lit_VarLike 'long='>
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      left: <Id.Lit_VarLike 'long='>
                                                                      name: long
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: {<L>}
                                                                )
                                                              ]
                                                              redirects: []
                                                            )
                                                          ]
                                                          right: <Id.Op_DSemi _>
                                                        )
                                                        (CaseArm
                                                          left: <Id.Lit_Star '*'>
                                                          pattern: 
                                                            (pat.Words
                                                              words: [{<Id.Lit_Star '*'>}]
                                                            )
                                                          middle: <Id.Right_CasePat _>
                                                          action: [
                                                            (command.ShAssignment
                                                              left: <Id.Lit_VarLike 'long='>
                                                              pairs: [
                                                                (AssignPair
                                                                  left: <Id.Lit_VarLike 'long='>
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      left: <Id.Lit_VarLike 'long='>
                                                                      name: long
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: (rhs_word__Empty)
                                                                )
                                                              ]
                                                              redirects: []
                                                            )
                                                          ]
                                                          right: <Id.Op_DSemi _>
                                                        )
                                                      ]
                                                      arms_end: <Id.KW_Esac esac>
                                                      redirects: []
                                                    )
                                                    (command.Simple
                                                      blame_tok: <echo>
                                                      more_env: []
                                                      words: [
                                                        {<echo>}
                                                        {
                                                          (DQ <'#define '> 
                                                            ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName ID) <'\t(1'> ($ Id.VSub_DollarName long) <'<<'> ($ Id.VSub_DollarName counter) <')'>
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  spids: [1112 1123]
                                                )
                                              ]
                                              else_action: []
                                              fi_kw: <Id.KW_Fi fi>
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <Id.Lit_Other '%'>
                                          pattern: 
                                            (pat.Words
                                              words: [{<Id.Lit_Other '%'> <keywords>}]
                                            )
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.If
                                              if_kw: <Id.KW_If if>
                                              arms: [
                                                (IfArm
                                                  keyword: <Id.KW_If if>
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Simple
                                                          blame_tok: <test>
                                                          more_env: []
                                                          words: [
                                                            {<test>}
                                                            {($ Id.VSub_DollarName define)}
                                                            {<Id.Lit_Equals '='>}
                                                            {<1>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                    )
                                                  then_kw: <Id.KW_Then then>
                                                  action: [
                                                    (command.Simple
                                                      blame_tok: <echo>
                                                      more_env: []
                                                      words: [
                                                        {<echo>}
                                                        {
                                                          (DQ <'#define '> 
                                                            ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName ID) <'\t'> ($ Id.VSub_DollarName counter)
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  spids: [1211 1222]
                                                )
                                              ]
                                              else_action: []
                                              fi_kw: <Id.KW_Fi fi>
                                              redirects: []
                                            )
                                            (command.If
                                              if_kw: <Id.KW_If if>
                                              arms: [
                                                (IfArm
                                                  keyword: <Id.KW_If if>
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Simple
                                                          blame_tok: <test>
                                                          more_env: []
                                                          words: [
                                                            {<test>}
                                                            {($ Id.VSub_DollarName table)}
                                                            {<Id.Lit_Equals '='>}
                                                            {<1>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                    )
                                                  then_kw: <Id.KW_Then then>
                                                  action: [
                                                    (command.Simple
                                                      blame_tok: <echo>
                                                      more_env: []
                                                      words: [
                                                        {<echo>}
                                                        {
                                                          (DQ <'\t'> 
                                                            (word_part.EscapedLiteral
                                                              token: <Id.Lit_EscapedChar '\\"'>
                                                              ch: '"'
                                                            ) ($ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <',\t'> 
                                                            ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName ID) <','>
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  spids: [1238 1249]
                                                )
                                              ]
                                              else_action: []
                                              fi_kw: <Id.KW_Fi fi>
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <Id.Lit_Other '%'>
                                          pattern: 
                                            (pat.Words
                                              words: [{<Id.Lit_Other '%'> <sequence>}]
                                            )
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.If
                                              if_kw: <Id.KW_If if>
                                              arms: [
                                                (IfArm
                                                  keyword: <Id.KW_If if>
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Simple
                                                          blame_tok: <test>
                                                          more_env: []
                                                          words: [
                                                            {<test>}
                                                            {($ Id.VSub_DollarName define)}
                                                            {<Id.Lit_Equals '='>}
                                                            {<1>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                    )
                                                  then_kw: <Id.KW_Then then>
                                                  action: [
                                                    (command.Simple
                                                      blame_tok: <echo>
                                                      more_env: []
                                                      words: [
                                                        {<echo>}
                                                        {
                                                          (DQ <'#define '> 
                                                            ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName ID) <'\t'> ($ Id.VSub_DollarName counter)
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  spids: [1276 1287]
                                                )
                                              ]
                                              else_action: []
                                              fi_kw: <Id.KW_Fi fi>
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                    (command.Case
                                      case_kw: <Id.KW_Case case>
                                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)})
                                      arms_start: <Id.KW_In in>
                                      arms: [
                                        (CaseArm
                                          left: <ksh>
                                          pattern: (pat.Words words:[{<ksh>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.DParen
                                              left: <Id.Op_DLeftParen _>
                                              child: 
                                                (arith_expr.BinaryAssign
                                                  op_id: Id.Arith_Equal
                                                  left: ($ Id.Lit_ArithVarLike counter)
                                                  right: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Plus
                                                      left: ($ Id.Lit_ArithVarLike counter)
                                                      right: {<Id.Lit_Digits 1>}
                                                    )
                                                )
                                              right: <Id.Op_DRightParen _>
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <Id.Lit_Star '*'>
                                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'counter='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'counter='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'counter='>
                                                      name: counter
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (CommandSub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <expr>
                                                            more_env: []
                                                            words: [
                                                              {<expr>}
                                                              {($ Id.VSub_DollarName counter)}
                                                              {<Id.Lit_Other '+'>}
                                                              {<1>}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        right: <Id.Backtick_Right '`'>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: 
        (case_arg.Word
          w: {($ Id.VSub_DollarName define) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName last)}
        )
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <1>
          pattern: (pat.Words words:[{<1> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName shell)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <ksh>
                  pattern: (pat.Words words:[{<ksh>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike n)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Minus
                              left: ($ Id.Lit_ArithVarLike counter)
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'n='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'n='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <expr>
                                    more_env: []
                                    words: [{<expr>} {($ Id.VSub_DollarName counter)} {<->} {<1>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'#define '> ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName last) <'\t'> 
                    ($ Id.VSub_DollarName n)
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Lit_Other '%'>
          pattern: (pat.Words words:[{<Id.Lit_Other '%'> <keywords>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_DollarName table)} {<Id.Lit_Equals '='>} {<1>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'\t0,\t0'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'};'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [1456 1467]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)