(command.CommandList
  children: [
    (command.Simple
      blame_tok: <Id.Lit_Colon ':'>
      more_env: []
      words: [{<Id.Lit_Colon ':'>} {<make>} {<abstract>} {<machine>} {<executor>} {<with>} {<state>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_command_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_command_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_command_='> name:_command_)
          op: assign_op.Equal
          rhs: {<mamexec>}
        )
      ]
      redirects: []
    )
    (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: <getopts>
                                more_env: []
                                words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}]
                                redirects: []
                                do_fork: T
                              )
                            terminator: <Id.Op_Semi _>
                          )
                          (command.Simple
                            blame_tok: <echo>
                            more_env: []
                            words: [{<echo>} {<0> ($ Id.VSub_DollarName opt)}]
                            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: <0123>
          pattern: (pat.Words words:[{<0123>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ARGV0='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ARGV0='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0)
                  op: assign_op.Equal
                  rhs: {(DQ <'-a '> ($ Id.VSub_DollarName _command_))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'USAGE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'USAGE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (SingleQuoted
                        left: <Id.Left_DollarSingleQuote '$\''>
                        tokens: [
                          <Id.Char_Literals '\n'>
                          <Id.Char_Literals '[-?\n'>
                          <Id.Char_Literals '@(#)$Id: mamexec (AT&T Labs Research) 1994-04-17 $\n'>
                          <Id.Char_Literals ']\n'>
                        ]
                        right: <Id.Right_SingleQuote '\''>
                      ) ($ Id.VSub_DollarName USAGE_LICENSE) 
                      (SingleQuoted
                        left: <Id.Left_DollarSingleQuote '$\''>
                        tokens: [
                          <Id.Char_Literals '\n'>
                          <Id.Char_Literals '[+NAME?mamexec - make abstract machine executor]\n'>
                          <Id.Char_Literals '[+DESCRIPTION?'>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals mamexec>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals ' reads MAM (Make Abstract Machine) target and\n'>
                          <Id.Char_Literals 
'\tprerequisite file descriptions from the standard input and executes\n'
                          >
                          <Id.Char_Literals 
'\tactions to update targets that are older than their prerequisites.\n'
                          >
                          <Id.Char_Literals '\tMamfiles are generated by the '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals --mam>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals ' option of '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals nmake>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1) and\n'>
                          <Id.Char_Literals '\t'>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals gmake>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1) and are portable to environments that only have\n'>
                          <Id.Char_Literals '\t'>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals sh>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1) and '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals cc>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1).]\n'>
                          <Id.Char_Literals '[+?A separate '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals mamstate>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1) program is used to compare current and state\n'>
                          <Id.Char_Literals '\tfile target times. '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals mamexec>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals ' is a '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals ksh>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1) script implementation\n'>
                          <Id.Char_Literals '\tthat has been replaced by the standalone '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals mamake>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1). New\n'>
                          <Id.Char_Literals '\tapplications should use '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals mamake>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '.]\n'>
                          <Id.Char_Literals '[d:debug?Set the debug trace level to '>
                          <Id.Char_OneChar '\\a'>
                          <Id.Char_Literals level>
                          <Id.Char_OneChar '\\a'>
                          <Id.Char_Literals '. Higher levels produce\n'>
                          <Id.Char_Literals '\tmore output.]\n'>
                          <Id.Char_Literals '[f:force?Force all targets to be out of date.]\n'>
                          <Id.Char_Literals '[i:ignore?Ignore shell action errors.]\n'>
                          <Id.Char_Literals '[n!:exec?Enable shell action execution.]\n'>
                          <Id.Char_Literals 
'[s:silent?Do not trace shell actions as they are executed.]\n'
                          >
                          <Id.Char_Literals '\n'>
                          <Id.Char_Literals '[ target ... ]\n'>
                          <Id.Char_Literals '\n'>
                          <Id.Char_Literals '[+SEE ALSO?'>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals mamake>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1), '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals mamstate>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1), '>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals nmake>
                          <Id.Char_OneChar '\\b'>
                          <Id.Char_Literals '(1)]\n'>
                        ]
                        right: <Id.Right_SingleQuote '\''>
                      )
                    }
                )
              ]
              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 'ARGV0='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ARGV0='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'USAGE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'USAGE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE)
                  op: assign_op.Equal
                  rhs: {(DQ <dfins>)}
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.ShFunction
      name_tok: <usage>
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'OPTIND='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'OPTIND='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIND='> name:OPTIND)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <getopts>
              more_env: []
              words: [
                {<getopts>}
                {($ Id.VSub_DollarName ARGV0)}
                {(DQ ($ Id.VSub_DollarName USAGE))}
                {<OPT>}
                {(SQ <'-?'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_debug_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_debug_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_debug_='> name:_debug_)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_diff_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_diff_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_diff_='> name:_diff_)
          op: assign_op.Equal
          rhs: {<.>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_error_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_error_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_error_='> name:_error_)
          op: assign_op.Equal
          rhs: {(SQ <'exit 1'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_exec_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_exec_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_exec_='> name:_exec_)
          op: assign_op.Equal
          rhs: {<eval>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_force_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_force_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_force_='> name:_force_)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_list_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_list_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_list_='> name:_list_)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_same_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_same_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_same_='> name:_same_)
          op: assign_op.Equal
          rhs: {<.>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_set_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_set_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_set_='> name:_set_)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_silent_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_silent_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_silent_='> name:_silent_)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_state_list_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_state_list_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_state_list_='> name:_state_list_)
          op: assign_op.Equal
          rhs: {<MAMlist>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_state_time_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_state_time_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_state_time_='> name:_state_time_)
          op: assign_op.Equal
          rhs: {<MAMtime>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_tmp_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_tmp_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_tmp_='> name:_tmp_)
          op: assign_op.Equal
          rhs: {<'/tmp/mam.'> ($ Id.VSub_Dollar '$') <.mam>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {(SQ <'rm -f $_tmp_'>)} {<0>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {(SQ <'exit 2'>)} {<1>} {<2>}]
      redirects: []
      do_fork: T
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Simple
              blame_tok: <getopts>
              more_env: []
              words: [
                {<getopts>}
                {($ Id.VSub_DollarName ARGV0)}
                {(DQ ($ Id.VSub_DollarName USAGE))}
                {<OPT>}
              ]
              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 OPT)})
              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 '_debug_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_debug_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_debug_='> name:_debug_)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName OPT)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <f>
                  pattern: (pat.Words words:[{<f>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_force_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_force_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_force_='> name:_force_)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <i>
                  pattern: (pat.Words words:[{<i>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_error_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_error_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_error_='> name:_error_)
                          op: assign_op.Equal
                          rhs: {<Id.Lit_Colon ':'>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <n>
                  pattern: (pat.Words words:[{<n>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_exec_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_exec_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_exec_='> name:_exec_)
                          op: assign_op.Equal
                          rhs: {<echo>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <s>
                  pattern: (pat.Words words:[{<s>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_silent_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_silent_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_silent_='> name:_silent_)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      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: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_select_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_select_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_select_='> name:_select_)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      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_Pound '#')})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <0>
                  pattern: (pat.Words words:[{<0>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                  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_Number 1)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [{<Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {($ Id.VSub_Number 1)}]
                      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.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _select_)})
                      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 '_select_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_select_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_select_='>
                                      name: _select_
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              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 '_select_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_select_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_select_='>
                                      name: _select_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {(DQ ($ Id.VSub_DollarName _select_) <'|'> ($ Id.VSub_Number 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.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_DollarName _select_)})
      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 '_select_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_select_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_select_='> name:_select_)
                  op: assign_op.Equal
                  rhs: {(DQ <'*'>)}
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.CommandList
              children: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [{<set>} {<-e>}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <false>
                      more_env: []
                      words: [{<false>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <true>
                      more_env: []
                      words: [{<true>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
              ]
            )
          right: <Id.Right_Subshell _>
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike '_set_='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '_set_='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_set_='> name:_set_)
              op: assign_op.Equal
              rhs: {<e>}
            )
          ]
          redirects: []
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [
            {<echo>}
            {($ Id.VSub_DollarName _command_) <Id.Lit_Colon ':'>}
            {<command>}
            {<errors>}
            {<ignored>}
            {<because>}
            {<of>}
            {<shell>}
            {<botch>}
          ]
          redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _silent_)})
      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 '_set_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_set_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_set_='> name:_set_)
                  op: assign_op.Equal
                  rhs: {<x> ($ Id.VSub_DollarName _set_)}
                )
              ]
              redirects: []
            )
          ]
          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 _exec_)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <echo>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_exec_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_exec_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_exec_='> name:_exec_)
                          op: assign_op.Equal
                          rhs: {<Id.Lit_Colon ':'>}
                        )
                      ]
                      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 _exec_)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ <eval>)}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_begin_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_begin_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_begin_='> name:_begin_)
                  op: assign_op.Equal
                  rhs: {(DQ <'('>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_end_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_end_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_end_='> name:_end_)
                  op: assign_op.Equal
                  rhs: {(DQ <') </dev/null'>)}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName _set_)})
              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.ShAssignment
                      left: <Id.Lit_VarLike '_set_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_set_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_set_='> name:_set_)
                          op: assign_op.Equal
                          rhs: {(DQ <'set -'> ($ Id.VSub_DollarName _set_) <';'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              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 '_set_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_set_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_set_='> name:_set_)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      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>}
                    {<-f>}
                    {($ Id.VSub_DollarName _state_list_)}
                    {<-a>}
                    {<-f>}
                    {($ Id.VSub_DollarName _state_time_)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <mamstate>
                  more_env: []
                  words: [{<mamstate>} {($ Id.VSub_DollarName _state_list_)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_DollarName _state_list_)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName _tmp_)}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [_i_]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <comm>
                                more_env: []
                                words: [
                                  {<comm>}
                                  {<-12>}
                                  {($ Id.VSub_DollarName _state_time_)}
                                  {($ Id.VSub_DollarName _tmp_)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {(SQ <'s/ .*//'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  ]
                )
              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 _same_)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <.>
                          pattern: (pat.Words words:[{<.>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_same_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_same_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_same_='> name:_same_)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName _i_)}
                                )
                              ]
                              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 '_same_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_same_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_same_='> name:_same_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName _same_) <'|'> 
                                        ($ Id.VSub_DollarName _i_)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          spids: [665 679]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      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: {<Id.Lit_Underscore _>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_match_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_match_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_match_='> name:_match_)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (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.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <echo>
                            more_env: []
                            words: [{<echo>} {<ok>}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Subshell
                            left: <Id.Op_LParen _>
                            child: 
                              (command.CommandList
                                children: [
                                  (command.Sentence
                                    child: 
                                      (command.Simple
                                        blame_tok: <read>
                                        more_env: []
                                        words: [{<read>} {<-r>} {<a>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    terminator: <Id.Op_Semi _>
                                  )
                                  (command.Simple
                                    blame_tok: <echo>
                                    more_env: []
                                    words: [{<echo>} {($ Id.VSub_DollarName a)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                              )
                            right: <Id.Right_Subshell _>
                            redirects: [
                              (Redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Right_Subshell _>
                    redirects: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <ok>
          pattern: (pat.Words words:[{<ok>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_read_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_read_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_read_='> name:_read_)
                  op: assign_op.Equal
                  rhs: {(SQ <'read -r'>)}
                )
              ]
              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 '_read_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_read_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_read_='> name:_read_)
                  op: assign_op.Equal
                  rhs: {<read>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {(SQ <'s/\\\\/\\\\\\\\/g'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName _tmp_)}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <exec>
              more_env: []
              words: [{<exec>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName _tmp_)}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {($ Id.VSub_DollarName _tmp_)}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_old_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_old_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_old_='> name:_old_)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_ifs_='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_ifs_='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ifs_='> name:_ifs_)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName IFS)}
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'IFS='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'IFS='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                      op: assign_op.Equal
                      rhs: {(SQ <' '>)}
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$_read_'>
              more_env: []
              words: [{($ Id.VSub_DollarName _read_)} {<_op_>} {<_arg_>} {<_val_>}]
              redirects: []
              do_fork: T
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'IFS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'IFS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName _ifs_)}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName _op_)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <note>)}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <info>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _arg_)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: (pat.Words words:[{(DQ <mam>)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_old_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_old_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_old_='> name:_old_)
                                  op: assign_op.Equal
                                  rhs: (rhs_word__Empty)
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Continue continue>
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <setv>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<Id.Lit_VarLike '_data_='> (SQ <'$'>) ($ Id.VSub_DollarName _arg_)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: 
                            {($ Id.VSub_DollarName _index_) <Id.Lit_Colon ':'> 
                              ($ Id.VSub_DollarName _data_)
                            }
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <__>
                          pattern: 
                            (pat.Words
                              words: [
                                {<__> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}
                                {<Id.Lit_Star '*'> <Id.Lit_Colon ':'>}
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{($ Id.VSub_DollarName _exec_)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_DoubleQuote '"'>
                                  pattern: (pat.Words words:[{(DQ <eval>)}])
                                  middle: <Id.Right_CasePat _>
                                  action: []
                                  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: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ ($ Id.VSub_DollarName _arg_) <'='> 
                                            ($ Id.VSub_DollarName _val_)
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {($ Id.VSub_DollarName _arg_) <Id.Lit_Equals '='> 
                                  (DQ ($ Id.VSub_DollarName _val_))
                                }
                                {(DQ <'</dev/null'>)}
                              ]
                              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 _arg_) <Id.Lit_Colon ':'> 
                              ($ Id.VSub_DollarName mam_cc_L)
                            }
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: (pat.Words words:[{(DQ <'CC:'>)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Subshell
                                  left: <Id.Op_LParen _>
                                  child: 
                                    (command.CommandList
                                      children: [
                                        (command.Simple
                                          blame_tok: <set>
                                          more_env: []
                                          words: [{<set>} {<->}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <mkdir>
                                          more_env: []
                                          words: [{<mkdir>} {<'/tmp/mam'> ($ Id.VSub_Dollar '$')}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <cd>
                                          more_env: []
                                          words: [{<cd>} {<'/tmp/mam'> ($ Id.VSub_Dollar '$')}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [{<echo>} {(SQ <'main(){return 0;}'>)}]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<main.c>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'code='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'code='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'code='>
                                                  name: code
                                                )
                                              op: assign_op.Equal
                                              rhs: {<1>}
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.If
                                          if_kw: <Id.KW_If if>
                                          arms: [
                                            (IfArm
                                              keyword: <Id.KW_If if>
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Simple
                                                      blame_tok: <Id.VSub_DollarName '$CC'>
                                                      more_env: []
                                                      words: [
                                                        {($ Id.VSub_DollarName CC)}
                                                        {<-c>}
                                                        {<main.c>}
                                                      ]
                                                      redirects: [
                                                        (Redir
                                                          op: <Id.Redir_Great '2>'>
                                                          loc: (redir_loc.Fd fd:2)
                                                          arg: {<'/dev/null'>}
                                                        )
                                                      ]
                                                      do_fork: T
                                                    )
                                                  ]
                                                )
                                              then_kw: <Id.KW_Then then>
                                              action: [
                                                (command.If
                                                  if_kw: <Id.KW_If if>
                                                  arms: [
                                                    (IfArm
                                                      keyword: <Id.KW_If if>
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Simple
                                                              blame_tok: <Id.VSub_DollarName '$CC'>
                                                              more_env: []
                                                              words: [
                                                                {($ Id.VSub_DollarName CC)}
                                                                {<-L.>}
                                                                {<main.o>}
                                                                {<-lc>}
                                                              ]
                                                              redirects: [
                                                                (Redir
                                                                  op: <Id.Redir_Great '2>'>
                                                                  loc: (redir_loc.Fd fd:2)
                                                                  arg: {<'/dev/null'>}
                                                                )
                                                              ]
                                                              do_fork: T
                                                            )
                                                          ]
                                                        )
                                                      then_kw: <Id.KW_Then then>
                                                      action: [
                                                        (command.AndOr
                                                          children: [
                                                            (command.Simple
                                                              blame_tok: <Id.VSub_DollarName '$CC'>
                                                              more_env: []
                                                              words: [
                                                                {($ Id.VSub_DollarName CC)}
                                                                {<-L.>}
                                                                {<main.o>}
                                                                {<-lc>}
                                                              ]
                                                              redirects: [
                                                                (Redir
                                                                  op: <Id.Redir_Great '>'>
                                                                  loc: (redir_loc.Fd fd:1)
                                                                  arg: {<libc.a>}
                                                                )
                                                                (Redir
                                                                  op: <Id.Redir_Great '2>'>
                                                                  loc: (redir_loc.Fd fd:2)
                                                                  arg: {<'/dev/null'>}
                                                                )
                                                              ]
                                                              do_fork: T
                                                            )
                                                            (command.ShAssignment
                                                              left: <Id.Lit_VarLike 'code='>
                                                              pairs: [
                                                                (AssignPair
                                                                  left: <Id.Lit_VarLike 'code='>
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      left: <Id.Lit_VarLike 'code='>
                                                                      name: code
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: {<0>}
                                                                )
                                                              ]
                                                              redirects: []
                                                            )
                                                          ]
                                                          ops: [<Id.Op_DPipe _>]
                                                        )
                                                      ]
                                                      spids: [1080 1094]
                                                    )
                                                  ]
                                                  else_action: []
                                                  fi_kw: <Id.KW_Fi fi>
                                                  redirects: []
                                                )
                                              ]
                                              spids: [1066 1078]
                                            )
                                          ]
                                          else_action: []
                                          fi_kw: <Id.KW_Fi fi>
                                          redirects: []
                                        )
                                        (command.Simple
                                          blame_tok: <cd>
                                          more_env: []
                                          words: [{<cd>} {<'/tmp'>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <rm>
                                          more_env: []
                                          words: [{<rm>} {<-rf>} {<'/tmp/mam'> ($ Id.VSub_Dollar '$')}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Exit exit>
                                          arg_word: {($ Id.VSub_DollarName code)}
                                        )
                                      ]
                                    )
                                  right: <Id.Right_Subshell _>
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'mam_cc_L='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'mam_cc_L='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'mam_cc_L='>
                                          name: mam_cc_L
                                        )
                                      op: assign_op.Equal
                                      rhs: {(SQ <' '>)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Continue continue>
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <make>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<_name_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> 
                          ($ Id.VSub_DollarName _name_)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<_prev_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> 
                          ($ Id.VSub_DollarName _prev_)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<_cmds_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> (SQ <'"$_cmds_"'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<_attr_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> 
                          ($ Id.VSub_DollarName _attr_)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {<Id.Lit_VarLike '_name_='> ($ Id.VSub_DollarName _arg_)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_prev_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_prev_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_prev_='> name:_prev_)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName _index_)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName _val_) <' '>)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [{<Id.Lit_Star '*'> (DQ <' metarule '>) <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_attr_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_attr_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_attr_='> name:_attr_)
                                  op: assign_op.Equal
                                  rhs: {<m> ($ Id.VSub_DollarName _attr_)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_cmds_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_cmds_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_cmds_='> name:_cmds_)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {
                          (DQ <'\tcase '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) ($ Id.VSub_DollarName _name_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                            <' in\n'> <'\t\t\t'> ($ Id.VSub_DollarName _select_) <')\n'> <'\t\t\t\tcase '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) ($ Id.VSub_DollarName _select_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                            <' in\n'> <'\t\t\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'*'> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) <')\t_select_='> ($ Id.VSub_DollarName _name_) <' ;;\n'> <'\t\t\t\tesac\n'> <'\t\t\t\t_match_=1\n'> 
                            <'\t\t\t\t_attr_=x'> ($ Id.VSub_DollarName _attr_) <'\n'> <'\t\t\t\t;;\n'> <'\t\t\tesac'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _force_)})
                      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: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {
                                  (DQ <'\tcase '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) ($ Id.VSub_DollarName _name_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                    <' in\n'> <'\t\t\t\t'> ($ Id.VSub_DollarName _diff_) <')_attr_=u'> ($ Id.VSub_DollarName _attr_) <' ;;\n'> 
                                    <'\t\t\t\t'> ($ Id.VSub_DollarName _same_) <');;\n'> <'\t\t\t\t*)\t_attr_=u'> ($ Id.VSub_DollarName _attr_) <' ;;\n'> 
                                    <'\t\t\t\tesac'>
                                  )
                                }
                              ]
                              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 '_attr_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_attr_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_attr_='> name:_attr_)
                                  op: assign_op.Equal
                                  rhs: {<u> ($ Id.VSub_DollarName _attr_)}
                                )
                              ]
                              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 _attr_)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'> <u> <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 _diff_)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <.>
                                  pattern: (pat.Words words:[{<.>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike '_diff_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_diff_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_diff_='>
                                              name: _diff_
                                            )
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName _name_)}
                                        )
                                      ]
                                      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 '_diff_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_diff_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_diff_='>
                                              name: _diff_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName _diff_) <'|'> 
                                                ($ Id.VSub_DollarName _name_)
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      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: {<Id.Lit_Underscore _> ($ Id.VSub_DollarName _index_)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<_name_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> 
                          ($ Id.VSub_DollarName _name_)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<_prev_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> 
                          ($ Id.VSub_DollarName _prev_)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<_cmds_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> 
                          ($ Id.VSub_DollarName _cmds_)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<_attr_> ($ Id.VSub_DollarName _index_) <Id.Lit_Equals '='> 
                          ($ Id.VSub_DollarName _attr_)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<Id.Lit_VarLike '_list_='> (SQ <'"'>) (DQ ($ Id.VSub_DollarName _list_)) 
                          (SQ <'\n'>) ($ Id.VSub_DollarName _name_) (SQ <'"'>)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Continue continue>
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <prev>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _force_)})
                      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: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {
                                  (DQ <'\tcase '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) ($ Id.VSub_DollarName _arg_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                    <' in\n'> <'\t\t\t\t'> ($ Id.VSub_DollarName _diff_) <')_attr_=u'> ($ Id.VSub_DollarName _attr_) <' ;;\n'> 
                                    <'\t\t\t\t'> ($ Id.VSub_DollarName _same_) <')\t;;\n'> <'\t\t\t\t*)\t_attr_=u'> ($ Id.VSub_DollarName _attr_) 
                                    <' ;;\n'> <'\t\t\t\tesac'>
                                  )
                                }
                              ]
                              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 '_attr_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_attr_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_attr_='> name:_attr_)
                                  op: assign_op.Equal
                                  rhs: {<u> ($ Id.VSub_DollarName _attr_)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Continue continue>
                    )
                  ]
                  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_Underscore _>
                  pattern: (pat.Words words:[{<Id.Lit_Underscore _>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {($ Id.VSub_DollarName _op_) <Id.Lit_Colon ':'>}
                            {<missing>}
                            {<make>}
                            {<op>}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Continue continue>
                    )
                  ]
                  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 _op_)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <attr>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _val_)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: (pat.Words words:[{(DQ <meta>)} {(DQ <suff>)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_attr_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_attr_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_attr_='> name:_attr_)
                                  op: assign_op.Equal
                                  rhs: {<m> ($ Id.VSub_DollarName _attr_)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <exec>)} {(DQ <....>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _old_)})
                      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 '_arg_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_arg_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_arg_='> name:_arg_)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName _val_)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          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 _val_)})
                              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.ShAssignment
                                      left: <Id.Lit_VarLike '_arg_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_arg_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_arg_='>
                                              name: _arg_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName _arg_) <' '> 
                                                ($ Id.VSub_DollarName _val_)
                                              )
                                            }
                                        )
                                      ]
                                      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 _cmds_)})
                      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 '_cmds_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_cmds_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_cmds_='> name:_cmds_)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName _arg_)}
                                )
                              ]
                              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 '_cmds_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_cmds_='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_cmds_='> name:_cmds_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName _cmds_) <'\n'> 
                                        ($ Id.VSub_DollarName _arg_)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <done>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {<Id.Lit_VarLike '_arg_='> ($ Id.VSub_DollarName _arg_)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_prop_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_prop_='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_prop_='> name:_prop_)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _arg_)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.VSub_DollarName '$_name_'>
                          pattern: (pat.Words words:[{($ Id.VSub_DollarName _name_)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{($ Id.VSub_DollarName _attr_)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: 
                                    (pat.Words
                                      words: [{<Id.Lit_Star '*'> <m> <Id.Lit_Star '*'>}]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: []
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_Star '*'> <x> <Id.Lit_Star '*'> <u> <Id.Lit_Star '*'>}
                                        {<Id.Lit_Star '*'> <u> <Id.Lit_Star '*'> <x> <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 _cmds_)})
                                      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 _attr_)}
                                                )
                                              arms_start: <Id.KW_In in>
                                              arms: [
                                                (CaseArm
                                                  left: <Id.Lit_Star '*'>
                                                  pattern: 
                                                    (pat.Words
                                                      words: [
                                                        {<Id.Lit_Star '*'> <u> <Id.Lit_Star '*'>}
                                                      ]
                                                    )
                                                  middle: <Id.Right_CasePat _>
                                                  action: [
                                                    (command.ShAssignment
                                                      left: <Id.Lit_VarLike '_prop_='>
                                                      pairs: [
                                                        (AssignPair
                                                          left: <Id.Lit_VarLike '_prop_='>
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike '_prop_='>
                                                              name: _prop_
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {<u>}
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                  ]
                                                  right: <Id.Op_DSemi _>
                                                )
                                              ]
                                              arms_end: <Id.KW_Esac esac>
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <Id.Lit_Star '*'>
                                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.VSub_DollarName '$_exec_'>
                                                  more_env: []
                                                  words: [
                                                    {($ Id.VSub_DollarName _exec_)}
                                                    {
                                                      (DQ ($ Id.VSub_DollarName _begin_) 
                                                        ($ Id.VSub_DollarName _set_) ($ Id.VSub_DollarName _cmds_) ($ Id.VSub_DollarName _end_)
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (BraceGroup
                                                  left: <Id.Lit_LBrace '{'>
                                                  children: [
                                                    (command.ShAssignment
                                                      left: <Id.Lit_VarLike '_code_='>
                                                      pairs: [
                                                        (AssignPair
                                                          left: <Id.Lit_VarLike '_code_='>
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike '_code_='>
                                                              name: _code_
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {($ Id.VSub_QMark '?')}
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                    (command.Case
                                                      case_kw: <Id.KW_Case case>
                                                      to_match: 
                                                        (case_arg.Word
                                                          w: {($ Id.VSub_DollarName _set_)}
                                                        )
                                                      arms_start: <Id.KW_In in>
                                                      arms: [
                                                        (CaseArm
                                                          left: <Id.Lit_Star '*'>
                                                          pattern: 
                                                            (pat.Words
                                                              words: [
                                                                {<Id.Lit_Star '*'> <-> 
                                                                  <Id.Lit_Star '*'> <e> <Id.Lit_Star '*'>
                                                                }
                                                              ]
                                                            )
                                                          middle: <Id.Right_CasePat _>
                                                          action: []
                                                          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 _cmds_)}
                                                                )
                                                              arms_start: <Id.KW_In in>
                                                              arms: [
                                                                (CaseArm
                                                                  left: <Id.Lit_Star '*'>
                                                                  pattern: 
                                                                    (pat.Words
                                                                      words: [
                                                                        {<Id.Lit_Star '*'> 
                                                                          <Id.KW_If if> <Id.Lit_Star '*'> <Id.KW_Then then> <Id.Lit_Star '*'> <Id.KW_Fi fi> <Id.Lit_Star '*'>
                                                                        }
                                                                        {(DQ <'||'>)}
                                                                      ]
                                                                    )
                                                                  middle: <Id.Right_CasePat _>
                                                                  action: [
                                                                    (command.ShAssignment
                                                                      left: 
                                                                        <Id.Lit_VarLike '_code_='>
                                                                      pairs: [
                                                                        (AssignPair
                                                                          left: 
                                                                            <Id.Lit_VarLike 
'_code_='
                                                                            >
                                                                          lhs: 
                                                                            (sh_lhs_expr.Name
                                                                              left: 
                                                                                <Id.Lit_VarLike 
'_code_='
                                                                                >
                                                                              name: _code_
                                                                            )
                                                                          op: assign_op.Equal
                                                                          rhs: {<0>}
                                                                        )
                                                                      ]
                                                                      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 _code_)}
                                                        )
                                                      arms_start: <Id.KW_In in>
                                                      arms: [
                                                        (CaseArm
                                                          left: <0>
                                                          pattern: (pat.Words words:[{<0>}])
                                                          middle: <Id.Right_CasePat _>
                                                          action: []
                                                          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: <echo>
                                                              more_env: []
                                                              words: [
                                                                {<echo>}
                                                                {
                                                                  (DQ <'*** exit code '> 
                                                                    ($ Id.VSub_DollarName _code_) <' making '> ($ Id.VSub_DollarName _name_)
                                                                  )
                                                                }
                                                              ]
                                                              redirects: [
                                                                (Redir
                                                                  op: <Id.Redir_GreatAnd '>&'>
                                                                  loc: (redir_loc.Fd fd:1)
                                                                  arg: {<2>}
                                                                )
                                                              ]
                                                              do_fork: T
                                                            )
                                                            (command.Simple
                                                              blame_tok: 
                                                                <Id.VSub_DollarName '$_error_'>
                                                              more_env: []
                                                              words: [{($ Id.VSub_DollarName _error_)}]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                          right: <Id.Op_DSemi _>
                                                        )
                                                      ]
                                                      arms_end: <Id.KW_Esac esac>
                                                      redirects: []
                                                    )
                                                  ]
                                                  redirects: []
                                                  right: <Id.Lit_RBrace '}'>
                                                )
                                              ]
                                              ops: [<Id.Op_DPipe _>]
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike '_prop_='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike '_prop_='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike '_prop_='>
                                                      name: _prop_
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {<u>}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              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: {($ Id.VSub_DollarName _prev_)}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {<Id.Lit_VarLike '_name_='> (SQ <'$'>) <_name_> 
                                  ($ Id.VSub_DollarName _index_)
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {<Id.Lit_VarLike '_prev_='> (SQ <'$'>) <_prev_> 
                                  ($ Id.VSub_DollarName _index_)
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {<Id.Lit_VarLike '_cmds_='> (SQ <'$'>) <_cmds_> 
                                  ($ Id.VSub_DollarName _index_)
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {<Id.Lit_VarLike '_attr_='> ($ Id.VSub_DollarName _prop_) (SQ <'$'>) 
                                  <_attr_> ($ Id.VSub_DollarName _index_)
                                }
                              ]
                              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.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {($ Id.VSub_DollarName _val_) <Id.Lit_Colon ':'>}
                                {($ Id.VSub_DollarName _op_)}
                                {($ Id.VSub_DollarName _name_)}
                                {<expected>}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IFS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IFS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName _ifs_)}
        )
      ]
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _match_)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ )}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ ($ Id.VSub_DollarName _command_) <': don\'t know how to make '> 
                        ($ Id.VSub_DollarName _select_)
                      )
                    }
                  ]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$_error_'>
              more_env: []
              words: [{($ Id.VSub_DollarName _error_)}]
              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 _exec_)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ <eval>)}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName _list_))}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName _state_list_)}
                )
              ]
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <mamstate>
                  more_env: []
                  words: [{<mamstate>} {($ Id.VSub_DollarName _state_list_)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_DollarName _state_list_)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName _state_time_)}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
  ]
)