(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <__gtar_parse_help_opt>
      name: __gtar_parse_help_opt
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<opttype>} {<arg>} {<opt>} {<separator>} {<optvar>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'opttype='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'opttype='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opttype='> name:opttype)
                  op: assign_op.Equal
                  rhs: {<long>}
                )
              ]
              redirects: []
            )
            (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_Number 2))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'separator='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'separator='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'separator='> name:separator)
                  op: assign_op.Equal
                  rhs: {(DQ <' '>)}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName opt))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <-->
                  pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <->
                  pattern: 
                    (pat.Words
                      words: [{<-> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <->
                  pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'opttype='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'opttype='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opttype='> name:opttype)
                          op: assign_op.Equal
                          rhs: {<short>}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'opt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'opt='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name opt>
                                var_name: opt
                                suffix_op: (suffix_op.Unary op:<Id.VOp1_DPound '##'> arg_word:{<->})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'separator='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'separator='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'separator='> name:separator)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      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: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'not an option '> ($ Id.VSub_DollarName opt))}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name opt>
                        var_name: opt
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: 
                              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\['> ch:'[') 
                                <Id.Lit_Other '*'>
                              }
                            replace: {}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name opt>
                        var_name: opt
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {<'='> <Id.Lit_Other '*'>}
                            replace: {<'='>}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name opt>
                        var_name: opt
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: 
                              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                <Id.Lit_Other '*'>
                              }
                            replace: {}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name opt>
                        var_name: opt
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: 
                              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') 
                                <Id.Lit_Other '*'>
                              }
                            replace: {}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name opt>
                        var_name: opt
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: 
                              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\;'> ch:';') 
                                <Id.Lit_Other '*'>
                              }
                            replace: {}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'optvar='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'optvar='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'optvar='> name:optvar)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName opttype) (SQ <_arg_>) ($ Id.VSub_DollarName arg)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [
                {<eval>}
                {
                  (DQ ($ Id.VSub_DollarName optvar) <'='> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') ($ Id.VSub_DollarName optvar) 
                    ($ Id.VSub_DollarName separator) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) ($ Id.VSub_DollarName opt) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__gtar_parse_help_line>
      name: __gtar_parse_help_line
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<i>}]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName i))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-->
                          pattern: 
                            (pat.Words
                              words: [{<--> <Id.Lit_Star '*'>} {<-> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <__gtar_parse_help_opt>
                              more_env: []
                              words: [
                                {<__gtar_parse_help_opt>}
                                {(DQ ($ Id.VSub_DollarName i))}
                                {(DQ ($ Id.VSub_Number 2))}
                              ]
                              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.Sentence
                              child: (command.ControlFlow keyword:<Id.ControlFlow_Break break>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__gnu_tar_parse_help>
      name: __gnu_tar_parse_help
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<str>} {<line>} {<arg>}]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: [(EnvPair left:<Id.Lit_VarLike 'IFS='> name:IFS val:(rhs_word__Empty))]
                          words: [{<read>} {<line>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_EqualTilde
                                          left: {(DQ ($ Id.VSub_DollarName line))}
                                          right: 
                                            {<Id.Lit_Other '^'> <Id.Lit_Other '['> <Id.Lit_Other '['> 
                                              <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '{'> <1> <Id.Lit_Other ','> 
                                              <10> <Id.Lit_Other '}'> <Id.Lit_Other '('> <Id.Lit_Other '('> <Id.Lit_Other '('> <Id.Lit_Other ','> 
                                              <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> 
                                              <Id.Lit_Other ')'> <Id.Lit_Other '?'> <Id.Lit_Other '('> <--> <Id.Lit_Other '?'> <Id.Lit_Other '('> <Id.Lit_Other '['> 
                                              <Id.Lit_RegexMeta '\\]'> <Id.Lit_RegexMeta '\\['> <a-zA-Z0-9> <Id.Lit_Other '?'> <-> <Id.Lit_Other '='> <Id.Lit_Other ']'> 
                                              <Id.Lit_Other '+'> <Id.Lit_Other ')'> <Id.Lit_Other ')'> <Id.Lit_Other '('> <Id.Lit_Other ','> <Id.Lit_Other '['> 
                                              <Id.Lit_Other '['> <Id.Lit_Other ':'> <space> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other ')'> 
                                              <Id.Lit_Other '?'> <Id.Lit_Other ')'> <Id.Lit_Other '+'> <Id.Lit_Other ')'> <Id.Lit_Other .> <Id.Lit_Other '*'> 
                                              <Id.Lit_Other '$'>
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'line='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'line='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'line='> name:line)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name BASH_REMATCH>
                                        var_name: BASH_REMATCH
                                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'str='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'str='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'str='> name:str)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name line>
                                          var_name: line
                                          suffix_op: 
                                            (suffix_op.PatSub
                                              pat: {<','>}
                                              replace: {<' '>}
                                              replace_mode: Id.Lit_Slash
                                              slash_tok: <Id.VOp2_Slash _>
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (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: {<none>}
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_EqualTilde
                                                  left: {(DQ ($ Id.VSub_DollarName line))}
                                                  right: 
                                                    {<--> <Id.Lit_Other '['> <A-Za-z0-9-> 
                                                      <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '('> <Id.Lit_RegexMeta '\\['> <Id.Lit_Other '?'> <Id.Lit_Other ')'> 
                                                      <Id.Lit_Other '='>
                                                    }
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.DBracket
                                          left: <Id.KW_DLeftBracket '[['>
                                          expr: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_n
                                              child: 
                                                {
                                                  (DQ 
                                                    (BracedVarSub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name BASH_REMATCH>
                                                      var_name: BASH_REMATCH
                                                      bracket_op: 
                                                        (bracket_op.ArrayIndex
                                                          expr: {<Id.Lit_Digits 1>}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  )
                                                }
                                            )
                                          right: <Id.Lit_DRightBracket ']]'>
                                          redirects: []
                                        )
                                        (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: {<opt>}
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (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: {<req>}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                                    )
                                  ]
                                  spids: [579 603]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <__gtar_parse_help_line>
                              more_env: []
                              words: [
                                {<__gtar_parse_help_line>}
                                {(DQ ($ Id.VSub_DollarName str))}
                                {(DQ ($ Id.VSub_DollarName arg))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [458 532]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_TLess '<<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <tar>
                              more_env: []
                              words: [{<tar>} {<--help>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'long_opts='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'long_opts='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'long_opts='> name:long_opts)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'        '> ($ Id.VSub_DollarName long_arg_none) <'        '> 
                        ($ Id.VSub_DollarName long_arg_opt) <'        '> ($ Id.VSub_DollarName long_arg_req)
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'short_opts='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'short_opts='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'short_opts='> name:short_opts)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName short_arg_none) ($ Id.VSub_DollarName short_arg_opt) 
                        ($ Id.VSub_DollarName short_arg_req)
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__gtar_parse_warnings>
      name: __gtar_parse_warnings
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<line>}]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: [(EnvPair left:<Id.Lit_VarLike 'IFS='> name:IFS val:(rhs_word__Empty))]
                          words: [{<read>} {<line>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_EqualTilde
                                          left: {($ Id.VSub_DollarName line)}
                                          right: 
                                            {<Id.Lit_Other '^'> <Id.Lit_Other '['> <Id.Lit_Other '['> 
                                              <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '*'> <-> <Id.Lit_Other '['> 
                                              <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '*'> 
                                              <Id.Lit_Other '['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'> ch:'`') 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\\''>
                                                ch: '\''
                                              ) <Id.Lit_Other ']'> <Id.Lit_Other '('> <Id.Lit_Other '['> <a-zA-Z0-9-> <Id.Lit_Other ']'> 
                                              <Id.Lit_Other '+'> <Id.Lit_Other ')'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') 
                                              <Id.Lit_Other '$'>
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name BASH_REMATCH>
                                      var_name: BASH_REMATCH
                                      bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                                      right: <Id.Right_DollarBrace '}'>
                                    ) <' no-'> 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name BASH_REMATCH>
                                      var_name: BASH_REMATCH
                                      bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [716 758]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_TLess '<<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <tar>
                              more_env: [
                                (EnvPair
                                  left: <Id.Lit_VarLike 'LC_ALL='>
                                  name: LC_ALL
                                  val: {<C>}
                                )
                              ]
                              words: [{<tar>} {<--warning> <Id.Lit_Equals '='>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_last_char>
      name: __tar_last_char
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Number 1>
                      var_name: 1
                      suffix_op: 
                        (suffix_op.Slice
                          begin: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: 
                                      {
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Number 1>
                                          var_name: 1
                                          prefix_op: <Id.VSub_Pound '#'>
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      }
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      right: <Id.Arith_RBrace _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_parse_old_opt>
      name: __tar_parse_old_opt
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<first_word>} {<char>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.LogicalAnd
                      left: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_eq
                          left: {(DQ ($ Id.VSub_DollarName cword))}
                          right: {<1>}
                        )
                      right: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {(DQ ($ Id.VSub_DollarName cur))}
                            )
                          right: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name cur>
                                      var_name: cur
                                      suffix_op: 
                                        (suffix_op.Slice
                                          begin: {<Id.Lit_Digits 0>}
                                          length: {<Id.Lit_Digits 1>}
                                        )
                                      right: <Id.Arith_RBrace _>
                                    )
                                  )
                                }
                              right: {(SQ <->)}
                            )
                        )
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'old_opt_progress='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'old_opt_progress='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'old_opt_progress='>
                          name: old_opt_progress
                        )
                      op: assign_op.Equal
                      rhs: {<1>}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'first_word='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'first_word='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first_word='> name:first_word)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name words>
                        var_name: words
                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.LogicalAnd
                      left: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {(DQ ($ Id.VSub_DollarName first_word))}
                        )
                      right: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobNEqual
                          left: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name first_word>
                                  var_name: first_word
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: {<Id.Lit_Digits 0>}
                                      length: {<Id.Lit_Digits 1>}
                                    )
                                  right: <Id.Arith_RBrace _>
                                )
                              )
                            }
                          right: {(DQ <->)}
                        )
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'old_opt_used='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'old_opt_used='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'old_opt_used='> name:old_opt_used)
                      op: assign_op.Equal
                      rhs: {<1>}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: {($ Id.VSub_DollarName old_opt_used)}
                                  right: {<1>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'char='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'char='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'char='> name:char)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name first_word>
                                var_name: first_word
                                suffix_op: 
                                  (suffix_op.Slice
                                    begin: {<Id.Lit_Digits 0>}
                                    length: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Arith_RBrace _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {(DQ ($ Id.VSub_DollarName char))}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <__tar_is_argreq>
                                              more_env: []
                                              words: [
                                                {<__tar_is_argreq>}
                                                {(DQ ($ Id.VSub_DollarName char))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'old_opt_parsed+='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'old_opt_parsed+='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'old_opt_parsed+='>
                                              name: old_opt_parsed
                                            )
                                          op: assign_op.PlusEqual
                                          rhs: 
                                            {
                                              (ShArrayLiteral
                                                left: <Id.Op_LParen _>
                                                words: [{(DQ ($ Id.VSub_DollarName char))}]
                                                right: <Id.Right_ShArrayLiteral _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1007 1016]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'first_word='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'first_word='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'first_word='>
                                      name: first_word
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name first_word>
                                        var_name: first_word
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_DPound '##'>
                                            arg_word: {($ Id.VSub_DollarName char)}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'char='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'char='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'char='> name:char)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name first_word>
                                        var_name: first_word
                                        suffix_op: 
                                          (suffix_op.Slice
                                            begin: {<Id.Lit_Digits 0>}
                                            length: {<Id.Lit_Digits 1>}
                                          )
                                        right: <Id.Arith_RBrace _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  spids: [965 978]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_preparse_cmdline>
      name: __tar_preparse_cmdline
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<first_arg>}
                {<my_args>}
                {<tmparg>}
                {<i>}
                {<Id.Lit_VarLike 'modes='> (DQ <ctxurdA>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <__tar_parse_old_opt>
              more_env: []
              words: [{<__tar_parse_old_opt>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'first_arg='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'first_arg='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first_arg='> name:first_arg)
                  op: assign_op.Equal
                  rhs: {<1>}
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName i))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <--delete>
                          pattern: (pat.Words words:[{<--delete>} {<--test-label>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'tar_mode='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'tar_mode='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'tar_mode='>
                                      name: tar_mode
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name i>
                                        var_name: i
                                        suffix_op: 
                                          (suffix_op.Slice
                                            begin: {<Id.Lit_Digits 2>}
                                            length: {<Id.Lit_Digits 100>}
                                          )
                                        right: <Id.Arith_RBrace _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'tar_mode_arg='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'tar_mode_arg='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'tar_mode_arg='>
                                      name: tar_mode_arg
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName i)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: []
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: 
                            (pat.Words
                              words: [
                                {<-> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> 
                                  ($ Id.VSub_DollarName modes) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'tar_mode='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'tar_mode='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'tar_mode='>
                                      name: tar_mode
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name i>
                                        var_name: i
                                        suffix_op: 
                                          (suffix_op.PatSub
                                            pat: {<'[^'> ($ Id.VSub_DollarName modes) <']'>}
                                            replace: {}
                                            replace_mode: Id.Lit_Slash
                                            slash_tok: <Id.VOp2_Slash _>
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'tar_mode='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'tar_mode='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'tar_mode='>
                                      name: tar_mode
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name tar_mode>
                                        var_name: tar_mode
                                        suffix_op: 
                                          (suffix_op.Slice
                                            begin: {<Id.Lit_Digits 0>}
                                            length: {<Id.Lit_Digits 1>}
                                          )
                                        right: <Id.Arith_RBrace _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'tar_mode_arg='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'tar_mode_arg='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'tar_mode_arg='>
                                      name: tar_mode_arg
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName i)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> ($ Id.VSub_DollarName modes) 
                                  <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_eq
                                                  left: {($ Id.VSub_DollarName first_arg)}
                                                  right: {<1>}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'tar_mode='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'tar_mode='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'tar_mode='>
                                              name: tar_mode
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name i>
                                                var_name: i
                                                suffix_op: 
                                                  (suffix_op.PatSub
                                                    pat: {<'[^'> ($ Id.VSub_DollarName modes) <']'>}
                                                    replace: {}
                                                    replace_mode: Id.Lit_Slash
                                                    slash_tok: <Id.VOp2_Slash _>
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'tar_mode='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'tar_mode='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'tar_mode='>
                                              name: tar_mode
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name tar_mode>
                                                var_name: tar_mode
                                                suffix_op: 
                                                  (suffix_op.Slice
                                                    begin: {<Id.Lit_Digits 0>}
                                                    length: {<Id.Lit_Digits 1>}
                                                  )
                                                right: <Id.Arith_RBrace _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'tar_mode_arg='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'tar_mode_arg='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'tar_mode_arg='>
                                              name: tar_mode_arg
                                            )
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName i)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1213 1226]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'first_arg='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'first_arg='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first_arg='> name:first_arg)
                          op: assign_op.Equal
                          rhs: {<0>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_file_option>
      name: __tar_file_option
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'ext='> (DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName tar_mode))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <c>
                  pattern: (pat.Words words:[{<c>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <_filedir>
                      more_env: []
                      words: [{<_filedir>} {<-d>}]
                      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: <_filedir>
                      more_env: []
                      words: [{<_filedir>} {(DQ ($ Id.VSub_DollarName ext))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_is_argreq>
      name: __tar_is_argreq
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<opt>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName opt))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <->
                  pattern: 
                    (pat.Words
                      words: [
                        {<-> <Id.Lit_LBracket '['> <A-Za-z0-9> <Id.Lit_QMark '?'> <Id.Lit_RBracket ']'>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_EqualTilde
                              left: {(DQ ($ Id.VSub_DollarName short_arg_req))}
                              right: 
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name opt>
                                    var_name: opt
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VOp1_DPound '##'>
                                        arg_word: {<->}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_LBracket '['>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_LBracket '['> <A-Za-z0-9> <Id.Lit_QMark '?'> <Id.Lit_RBracket ']'>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_EqualTilde
                              left: {(DQ ($ Id.VSub_DollarName short_arg_req))}
                              right: {(${ Id.VSub_Name opt)}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-->
                  pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_EqualTilde
                              left: {(DQ ($ Id.VSub_DollarName long_arg_req))}
                              right: 
                                {<Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> 
                                  <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> ($ Id.VSub_DollarName opt) <Id.Lit_Other '='> <Id.Lit_Other '['> 
                                  <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'>
                                }
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_complete_mode>
      name: __tar_complete_mode
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<short_modes>}
                {<has_mode>}
                {<rawopt>}
                {<generated>}
                {<allshort_raw_unused>}
                {<allshort_raw>}
                {<filler>}
                {<i>}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'short_modes='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'short_modes='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'short_modes='> name:short_modes)
                  op: assign_op.Equal
                  rhs: {(DQ <ctx>)}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_z
                      child: {(DQ ($ Id.VSub_DollarName basic_tar))}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'short_modes='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'short_modes='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'short_modes='> name:short_modes)
                      op: assign_op.Equal
                      rhs: {(DQ <ctxurdA>)}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'rawopt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'rawopt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rawopt='> name:rawopt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name cur>
                        var_name: cur
                        suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<->})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'allshort_raw='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'allshort_raw='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'allshort_raw='> name:allshort_raw)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name short_opts>
                        var_name: short_opts
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {<'[- ]'>}
                            replace: {}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ ($ Id.VSub_DollarName tar_mode))}
                                  right: {<none>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'filler='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'filler='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filler='> name:filler)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.LogicalAnd
                                          left: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_z
                                              child: {(DQ ($ Id.VSub_DollarName cur))}
                                            )
                                          right: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_z
                                              child: {(DQ ($ Id.VSub_DollarName basic_tar))}
                                            )
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'filler='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'filler='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filler='> name:filler)
                                  op: assign_op.Equal
                                  rhs: {<->}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1605 1626]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'generated='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'generated='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'generated='> name:generated)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ForExpr
                      keyword: <Id.KW_For for>
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike i)
                          right: {<Id.Lit_Digits 0>}
                        )
                      cond: {<Id.Lit_Digits 1>}
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: ($ Id.Lit_ArithVarLike i)
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <local>
                              more_env: []
                              words: [
                                {<local>}
                                {<Id.Lit_VarLike 'c='> 
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name short_modes>
                                      var_name: short_modes
                                      suffix_op: 
                                        (suffix_op.Slice
                                          begin: {($ Id.VSub_DollarName i)}
                                          length: {<Id.Lit_Digits 1>}
                                        )
                                      right: <Id.Arith_RBrace _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {(DQ ($ Id.VSub_DollarName c))}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'generated+='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'generated+='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'generated+='>
                                      name: generated
                                    )
                                  op: assign_op.PlusEqual
                                  rhs: 
                                    {
                                      (DQ <' '> ($ Id.VSub_DollarName filler) 
                                        ($ Id.VSub_DollarName cur) ($ Id.VSub_DollarName c)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-W>}
                                            {(DQ ($ Id.VSub_DollarName generated))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [1579 1594]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              children: [
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_eq
                                      left: {(DQ ($ Id.VSub_DollarName old_opt_progress))}
                                      right: {<0>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <__tar_is_argreq>
                                  more_env: []
                                  words: [
                                    {<__tar_is_argreq>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <__tar_last_char>
                                              more_env: []
                                              words: [
                                                {<__tar_last_char>}
                                                {(DQ ($ Id.VSub_DollarName cur))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  name: COMPREPLY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [{(DQ ($ Id.VSub_DollarName cur))}]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  spids: [1741 1772]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'allshort_raw_unused='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'allshort_raw_unused='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'allshort_raw_unused='>
                      name: allshort_raw_unused
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name allshort_raw>
                        var_name: allshort_raw
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {<'['> ($ Id.VSub_DollarName rawopt) <']'>}
                            replace: {}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: {(DQ ($ Id.VSub_DollarName tar_mode))}
                                  right: {<none>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'allshort_raw_unused='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'allshort_raw_unused='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'allshort_raw_unused='>
                              name: allshort_raw_unused
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name allshort_raw_unused>
                                var_name: allshort_raw_unused
                                suffix_op: 
                                  (suffix_op.PatSub
                                    pat: {<'['> ($ Id.VSub_DollarName short_modes) <']'>}
                                    replace: (rhs_word__Empty)
                                    replace_mode: Id.Lit_Slash
                                    slash_tok: <Id.VOp2_Slash _>
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1807 1822]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'generated='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'generated='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'generated='> name:generated)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ForExpr
              keyword: <Id.KW_For for>
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {<Id.Lit_Digits 0>}
                )
              cond: {<Id.Lit_Digits 1>}
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'c='> 
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name allshort_raw_unused>
                              var_name: allshort_raw_unused
                              suffix_op: 
                                (suffix_op.Slice
                                  begin: {($ Id.VSub_DollarName i)}
                                  length: {<Id.Lit_Digits 1>}
                                )
                              right: <Id.Arith_RBrace _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {(DQ ($ Id.VSub_DollarName c))}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Break break>
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'generated+='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'generated+='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'generated+='> name:generated)
                          op: assign_op.PlusEqual
                          rhs: {(DQ <' '> ($ Id.VSub_DollarName cur) ($ Id.VSub_DollarName c))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMPREPLY='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMPREPLY='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <compgen>
                                  more_env: []
                                  words: [{<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName generated))}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__gtar_complete_lopts>
      name: __gtar_complete_lopts
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<rv>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMPREPLY='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMPREPLY='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <compgen>
                                  more_env: []
                                  words: [
                                    {<compgen>}
                                    {<-W>}
                                    {(DQ ($ Id.VSub_DollarName long_opts))}
                                    {<-->}
                                    {(DQ ($ Id.VSub_DollarName cur))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'rv='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'rv='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rv='> name:rv)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {($ Id.VSub_DollarName COMPREPLY)}
                      right: {<Id.Lit_Other '*'> <Id.BoolBinary_GlobEqual '='>}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <compopt>
                  more_env: []
                  words: [{<compopt>} {<-o>} {<nospace>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName rv)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__gtar_complete_sopts>
      name: __gtar_complete_sopts
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<generated>} {<short_mode_opts>} {<i>} {<c>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'short_mode_opts='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'short_mode_opts='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'short_mode_opts='>
                      name: short_mode_opts
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <ctxurdA>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'generated='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'generated='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'generated='> name:generated)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name short_opts>
                        var_name: short_opts
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {<'['> ($ Id.VSub_DollarName short_mode_opts) <']'>}
                            replace: {}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ForExpr
              keyword: <Id.KW_For for>
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {<Id.Lit_Digits 0>}
                )
              cond: {<Id.Lit_Digits 1>}
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'c='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'c='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name allshort_raw_unused>
                                  var_name: allshort_raw_unused
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: {($ Id.VSub_DollarName i)}
                                      length: {<Id.Lit_Digits 1>}
                                    )
                                  right: <Id.Arith_RBrace _>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {(DQ ($ Id.VSub_DollarName c))}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Break break>
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'generated+='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'generated+='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'generated+='> name:generated)
                          op: assign_op.PlusEqual
                          rhs: {(DQ <' '> ($ Id.VSub_DollarName cur) ($ Id.VSub_DollarName c))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMPREPLY='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMPREPLY='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <compgen>
                                  more_env: []
                                  words: [
                                    {<compgen>}
                                    {<-W>}
                                    {(DQ ($ Id.VSub_DollarName generated))}
                                    {<-->}
                                    {(DQ ($ Id.VSub_DollarName cur))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_try_mode>
      name: __tar_try_mode
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName cur))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <-->
                  pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {(DQ ($ Id.VSub_DollarName basic_tar))}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.Simple
                      blame_tok: <__gtar_complete_lopts>
                      more_env: []
                      words: [{<__gtar_complete_lopts>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {($ Id.VSub_QMark '?')}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <->
                  pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {(DQ ($ Id.VSub_DollarName basic_tar))}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <__tar_complete_mode>
                          more_env: []
                          words: [{<__tar_complete_mode>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.LogicalOr
                                          left: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_eq
                                              left: {(DQ ($ Id.VSub_DollarName cword))}
                                              right: {<1>}
                                            )
                                          right: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: {(DQ ($ Id.VSub_DollarName tar_mode))}
                                              right: {<none>}
                                            )
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <__tar_complete_mode>
                                  more_env: []
                                  words: [{<__tar_complete_mode>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<0>}
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          spids: [2226 2251]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_adjust_PREV_from_old_option>
      name: __tar_adjust_PREV_from_old_option
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_eq
                                      left: {(DQ ($ Id.VSub_DollarName old_opt_used))}
                                      right: {<1>}
                                    )
                                  right: 
                                    (bool_expr.LogicalAnd
                                      left: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_gt
                                          left: {(DQ ($ Id.VSub_DollarName cword))}
                                          right: {<1>}
                                        )
                                      right: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_lt
                                          left: {(DQ ($ Id.VSub_DollarName cword))}
                                          right: 
                                            {
                                              (word_part.ArithSub
                                                left: <Id.Left_DollarDParen '$(('>
                                                anode: 
                                                  (arith_expr.Binary
                                                    op_id: Id.Arith_Plus
                                                    left: 
                                                      {
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name old_opt_parsed>
                                                          var_name: old_opt_parsed
                                                          prefix_op: <Id.VSub_Pound '#'>
                                                          bracket_op: 
                                                            (bracket_op.WholeArray
                                                              op_id: Id.Lit_At
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        )
                                                      }
                                                    right: {<Id.Lit_Digits 2>}
                                                  )
                                                right: <Id.Right_DollarDParen _>
                                              )
                                            }
                                        )
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (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: 
                            {
                              (DQ <-> 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name old_opt_parsed>
                                  var_name: old_opt_parsed
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Minus
                                          left: {($ Id.VSub_DollarName cword)}
                                          right: {<Id.Lit_Digits 2>}
                                        )
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2299 2352]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_extract_like_mode>
      name: __tar_extract_like_mode
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<i>}]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: (for_iter.Words words:[{<x>} {<d>} {<t>} {<delete>}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ ($ Id.VSub_DollarName tar_mode))}
                              right: {(DQ ($ Id.VSub_DollarName i))}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_try_list_archive>
      name: __tar_try_list_archive
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<tarball>} {<tarbin>} {<untar>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <__tar_extract_like_mode>
                  more_env: []
                  words: [{<__tar_extract_like_mode>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [
                {<set>}
                {<-->}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name words>
                      var_name: words
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'tarbin='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'tarbin='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tarbin='> name:tarbin)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'untar='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'untar='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'untar='> name:untar)
                  op: assign_op.Equal
                  rhs: {(DQ <tf>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <read>
              more_env: []
              words: [{<read>} {<tarball>}]
              redirects: [
                (Redir
                  op: <Id.Redir_TLess '<<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <printf>
                                  more_env: []
                                  words: [{<printf>} {<-->} {(SQ <'%s\\n'>)} {(DQ ($ Id.VSub_At '@'))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <sed>
                                  more_env: []
                                  words: [
                                    {<sed>}
                                    {<-n>}
                                    {
                                      (DQ <'/^.'> <Id.Lit_BadBackslash '\\'> <'{1,'> 
                                        <Id.Lit_BadBackslash '\\'> <'}'> ($ Id.VSub_DollarName regex) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                        <'/p'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <tee>
                                  more_env: []
                                  words: [{<tee>} {<'/tmp/jetel'>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {(DQ ($ Id.VSub_DollarName tarball))}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'IFS='> 
                          (SingleQuoted
                            left: <Id.Left_DollarSingleQuote '$\''>
                            tokens: [<Id.Char_OneChar '\\n'>]
                            right: <Id.Right_SingleQuote '\''>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPREPLY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPREPLY='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPREPLY='> name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <compgen>
                                          more_env: []
                                          words: [
                                            {<compgen>}
                                            {<-o>}
                                            {<filenames>}
                                            {<-W>}
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.WhileUntil
                                                      keyword: <Id.KW_While while>
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Sentence
                                                              child: 
                                                                (command.Simple
                                                                  blame_tok: <read>
                                                                  more_env: []
                                                                  words: [{<read>} {<line>}]
                                                                  redirects: []
                                                                  do_fork: T
                                                                )
                                                              terminator: <Id.Op_Semi _>
                                                            )
                                                          ]
                                                        )
                                                      body: 
                                                        (command.DoGroup
                                                          left: <Id.KW_Do do>
                                                          children: [
                                                            (command.Simple
                                                              blame_tok: <printf>
                                                              more_env: []
                                                              words: [
                                                                {<printf>}
                                                                {
                                                                  (DQ <'%q'> 
                                                                    <Id.Lit_BadBackslash '\\'> <n>
                                                                  )
                                                                }
                                                                {
                                                                  (DQ 
                                                                    (CommandSub
                                                                      left_token: 
                                                                        <Id.Left_DollarParen '$('>
                                                                      child: 
                                                                        (command.Simple
                                                                          blame_tok: <printf>
                                                                          more_env: []
                                                                          words: [
                                                                            {<printf>}
                                                                            {<Id.Lit_Other '%'> <q> 
                                                                              (DQ 
                                                                                <
Id.Lit_BadBackslash '\\'
                                                                                > <n>
                                                                              )
                                                                            }
                                                                            {
                                                                              (DQ 
                                                                                ($ 
Id.VSub_DollarName line
                                                                                )
                                                                              )
                                                                            }
                                                                          ]
                                                                          redirects: []
                                                                          do_fork: T
                                                                        )
                                                                      right: <Id.Eof_RParen _>
                                                                    )
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                          right: <Id.KW_Done done>
                                                        )
                                                      redirects: [
                                                        (Redir
                                                          op: <Id.Redir_TLess '<<<'>
                                                          loc: (redir_loc.Fd fd:0)
                                                          arg: 
                                                            {
                                                              (DQ 
                                                                (CommandSub
                                                                  left_token: 
                                                                    <Id.Left_DollarParen '$('>
                                                                  child: 
                                                                    (command.Simple
                                                                      blame_tok: 
                                                                        <Id.VSub_DollarName 
'$tarbin'
                                                                        >
                                                                      more_env: []
                                                                      words: [
                                                                        {
                                                                          ($ Id.VSub_DollarName 
tarbin
                                                                          )
                                                                        }
                                                                        {
                                                                          ($ Id.VSub_DollarName untar)
                                                                        }
                                                                        {
                                                                          (DQ 
                                                                            ($ Id.VSub_DollarName 
tarball
                                                                            )
                                                                          )
                                                                        }
                                                                      ]
                                                                      redirects: [
                                                                        (Redir
                                                                          op: <Id.Redir_Great '2>'>
                                                                          loc: (redir_loc.Fd fd:2)
                                                                          arg: {<'/dev/null'>}
                                                                        )
                                                                      ]
                                                                      do_fork: T
                                                                    )
                                                                  right: <Id.Eof_RParen _>
                                                                )
                                                              )
                                                            }
                                                        )
                                                      ]
                                                    )
                                                  right: <Id.Eof_RParen _>
                                                )
                                              )
                                            }
                                            {<-->}
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <printf>
                                                      more_env: []
                                                      words: [
                                                        {<printf>}
                                                        {(DQ <'%q'> <Id.Lit_BadBackslash '\\'> <n>)}
                                                        {(DQ ($ Id.VSub_DollarName cur))}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  right: <Id.Eof_RParen _>
                                                )
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [2556 2569]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_cleanup_prev>
      name: __tar_cleanup_prev
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_EqualTilde
                                  left: {(DQ ($ Id.VSub_DollarName prev))}
                                  right: 
                                    {<Id.Lit_Other '^'> <-> <Id.Lit_Other '['> <a-zA-Z0-9> 
                                      <Id.Lit_Other '?'> <Id.Lit_Other ']'> <Id.Lit_Other '*'> <Id.Lit_Other '$'>
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (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: 
                            {
                              (DQ <-> 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <__tar_last_char>
                                      more_env: []
                                      words: [{<__tar_last_char>} {(DQ ($ Id.VSub_DollarName prev))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2691 2713]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_detect_ext>
      name: __tar_detect_ext
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'tars='> 
                  (SQ <'@(@(tar|gem|spkg)?(.@(Z|[bgx]z|bz2|lz?(ma)))|t@([abglx]z|b?(z)2))'>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ext='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ext='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName tars))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'regex='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'regex='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'regex='> name:regex)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (SQ 
                        <
'\\(\\(tar\\|gem\\|spkg\\)\\(\\.\\(Z\\|[bgx]z\\|bz2\\|lz\\(ma\\)\\?\\)\\)\\?\\|t\\([abglx]z\\|bz\\?2\\)\\)'
                        >
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName tar_mode_arg))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <-->
                  pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.ExtGlob_QMark '?('>
                  pattern: 
                    (pat.Words
                      words: [
                        {
                          (word_part.ExtGlob
                            op: <Id.ExtGlob_QMark '?('>
                            arms: [{<->}]
                            right: <Id.Right_ExtGlob _>
                          ) <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <cr> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <f>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ext='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ext='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                          op: assign_op.Equal
                          rhs: {(SQ <'@(tar|gem|spkg)'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name words>
                                var_name: words
                                bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'> <a> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ext='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ext='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName tars))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'> <z> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ext='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ext='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'t?(ar.)gz'>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'> <Z> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ext='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ext='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'ta@(r.Z|z)'>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <jy> <Id.Lit_RBracket ']'> 
                                  <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ext='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ext='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'t@(?(ar.)bz?(2)|b2)'>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'> <J> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ext='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ext='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'t?(ar.)xz'>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.ExtGlob_Plus '+('>
                  pattern: 
                    (pat.Words
                      words: [
                        {
                          (word_part.ExtGlob
                            op: <Id.ExtGlob_Plus '+('>
                            arms: [{<'[^ZzJjy]'>}]
                            right: <Id.Right_ExtGlob _>
                          ) <f>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ext='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ext='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName tars))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'regex='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'regex='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'regex='> name:regex)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (SQ 
                                <
'\\(\\(tar\\|gem\\|spkg\\)\\(\\.\\(Z\\|[bgx]z\\|bz2\\|lz\\(ma\\)\\?\\)\\)\\?\\|t\\([abglx]z\\|bz\\?2\\)\\)'
                                >
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Zz> <Id.Lit_RBracket ']'> 
                          <Id.Lit_Star '*'> <f>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ext='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ext='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                          op: assign_op.Equal
                          rhs: {(SQ <'@(@(t?(ar.)|gem.|spkg.)@(gz|Z)|taz)'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'regex='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'regex='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'regex='> name:regex)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (SQ 
                                <'\\(\\(t\\(ar\\.\\)\\?\\|gem\\.\\|spkg\\.\\)\\(gz\\|Z\\)\\|taz\\)'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <jy> <Id.Lit_RBracket ']'> 
                          <Id.Lit_Star '*'> <f>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ext='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ext='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                          op: assign_op.Equal
                          rhs: {(SQ <'@(@(t?(ar.)|gem.)bz?(2)|spkg|tb2)'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'regex='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'regex='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'regex='> name:regex)
                          op: assign_op.Equal
                          rhs: {(SQ <'\\(\\(t\\(ar\\.\\)\\?\\|gem\\.\\)bz2\\?\\|spkg\\|tb2\\)'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <J> <Id.Lit_RBracket ']'> 
                          <Id.Lit_Star '*'> <f>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ext='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ext='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext)
                          op: assign_op.Equal
                          rhs: {(SQ <'@(@(tar|gem|spkg).@(lzma|xz)|t[lx]z)'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'regex='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'regex='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'regex='> name:regex)
                          op: assign_op.Equal
                          rhs: {(SQ <'\\(\\(tar\\|gem\\|spkg\\)\\.\\(lzma\\|xz\\)\\|t[lx]z\\)'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_gtar>
      name: _gtar
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<long_opts>}
                {<short_opts>}
                {<long_arg_none>}
                {<long_arg_opt>}
                {<long_arg_req>}
                {<short_arg_none>}
                {<short_arg_opt>}
                {<short_arg_req>}
                {<tar_mode>}
                {<tar_mode_arg>}
                {<Id.Lit_VarLike 'old_opt_progress='> <0>}
                {<Id.Lit_VarLike 'old_opt_used='> <0>}
                {<Id.Lit_VarLike 'old_opt_parsed='> 
                  (ShArrayLiteral
                    left: <Id.Op_LParen _>
                    words: []
                    right: <Id.Right_ShArrayLiteral _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'tar_mode='> <none>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'tar_mode_arg='>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ ($ Id.VSub_DollarName _TAR_OPT_DEBUG))}
                                  right: {<1>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [{<set>} {<-x>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PS4='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PS4='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PS4='> name:PS4)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                <'BASH_SOURCE:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'LINENO: '>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3064 3079]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<cur>} {<prev>} {<words>} {<cword>} {<split>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <_init_completion>
                  more_env: []
                  words: [{<_init_completion>} {<-s>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <__gnu_tar_parse_help>
              more_env: []
              words: [{<__gnu_tar_parse_help>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <__tar_preparse_cmdline>
              more_env: []
              words: [
                {<__tar_preparse_cmdline>}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name words>
                      var_name: words
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<ext>} {<regex>} {<tar>} {<untar>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <__tar_detect_ext>
              more_env: []
              words: [{<__tar_detect_ext>}]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <__tar_adjust_PREV_from_old_option>
                      more_env: []
                      words: [{<__tar_adjust_PREV_from_old_option>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <__tar_posix_prev_handle>
                          more_env: []
                          words: [{<__tar_posix_prev_handle>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Break break>
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.Simple
                      blame_tok: <__tar_cleanup_prev>
                      more_env: []
                      words: [{<__tar_cleanup_prev>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName prev)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-C>
                          pattern: (pat.Words words:[{<-C>} {<--directory>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <_filedir>
                              more_env: []
                              words: [{<_filedir>} {<-d>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--atime-preserve>
                          pattern: (pat.Words words:[{<--atime-preserve>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-W>}
                                                    {(SQ <'replace system'>)}
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--group>
                          pattern: (pat.Words words:[{<--group>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-g>}
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--owner>
                          pattern: (pat.Words words:[{<--owner>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-u>}
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-F>
                          pattern: 
                            (pat.Words
                              words: [
                                {<-F>}
                                {<--info-script>}
                                {<--new-volume-script>}
                                {<--rmt-command>}
                                {<--rsh-command>}
                                {<-I>}
                                {<--use-compress-program>}
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <compopt>
                              more_env: []
                              words: [{<compopt>} {<-o>} {<filenames>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-c>}
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--volno-file>
                          pattern: 
                            (pat.Words
                              words: [
                                {<--volno-file>}
                                {<--add-file>}
                                {<-T>}
                                {<--files-from>}
                                {<-X>}
                                {<--exclude-from>}
                                {<--index-file>}
                                {<--listed-incremental>}
                                {<-g>}
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <_filedir>
                              more_env: []
                              words: [{<_filedir>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-H>
                          pattern: (pat.Words words:[{<-H>} {<--format>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-W>}
                                                    {(SQ <'gnu oldgnu pax posix ustar v7'>)}
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--quoting-style>
                          pattern: (pat.Words words:[{<--quoting-style>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-W>}
                                                    {
                                                      (SQ <'literal shell shell-always c c-maybe\n'> 
                                                        <
'                    escape locale clocale'
                                                        >
                                                      )
                                                    }
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--totals>
                          pattern: (pat.Words words:[{<--totals>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-W>}
                                                    {(SQ <'SIGHUP SIGQUIT SIGINT SIGUSR1 SIGUSR2'>)}
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--warning>
                          pattern: (pat.Words words:[{<--warning>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPREPLY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPREPLY='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPREPLY='>
                                      name: COMPREPLY
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <compgen>
                                                  more_env: []
                                                  words: [
                                                    {<compgen>}
                                                    {<-W>}
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <__gtar_parse_warnings>
                                                              more_env: []
                                                              words: [{<__gtar_parse_warnings>}]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                    {<-->}
                                                    {(DQ ($ Id.VSub_DollarName cur))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--file>
                          pattern: 
                            (pat.Words
                              words: [
                                {<--file>}
                                {<-f>}
                                {<-> 
                                  (word_part.ExtGlob
                                    op: <Id.ExtGlob_Bang '!('>
                                    arms: [{<-> <Id.Lit_Other '*'>}]
                                    right: <Id.Right_ExtGlob _>
                                  ) <f>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <__tar_file_option>
                              more_env: []
                              words: [{<__tar_file_option>} {(DQ ($ Id.VSub_DollarName ext))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_EqualTilde
                                      left: {(DQ <' '> ($ Id.VSub_DollarName long_arg_req) <' '>)}
                                      right: 
                                        {
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\ '>
                                            ch: ' '
                                          ) ($ Id.VSub_DollarName prev) <Id.Lit_Other '='> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\ '>
                                            ch: ' '
                                          )
                                        }
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.AndOr
                              children: [
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_EqualTilde
                                      left: {(DQ <' '> ($ Id.VSub_DollarName long_arg_opt) <' '>)}
                                      right: 
                                        {
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\ '>
                                            ch: ' '
                                          ) ($ Id.VSub_DollarName prev) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '> ch:' ')
                                        }
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.VSub_DollarName '$split'>
                                  more_env: []
                                  words: [{($ Id.VSub_DollarName split)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: 
                            (pat.Words
                              words: [
                                {<-> <Id.Lit_LBracket '['> <a-zA-Z0-9> <Id.Lit_QMark '?'> 
                                  <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_EqualTilde
                                      left: {(DQ ($ Id.VSub_DollarName short_arg_req))}
                                      right: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name prev>
                                            var_name: prev
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VOp1_DPound '##'>
                                                arg_word: {<->}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          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:{(DQ ($ Id.VSub_DollarName cur))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <->
                          pattern: 
                            (pat.Words
                              words: [
                                {<-> <Id.Lit_LBracket '['> <a-zA-Z0-9> <Id.Lit_ArrayLhsClose ']='> 
                                  <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <__tar_try_mode>
                          more_env: []
                          words: [{<__tar_try_mode>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Break break>
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName cur))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <__gtar_complete_lopts>
                              more_env: []
                              words: [{<__gtar_complete_lopts>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <__gtar_complete_sopts>
                              more_env: []
                              words: [{<__gtar_complete_sopts>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_eq
                              left: {(DQ ($ Id.VSub_DollarName cword))}
                              right: {<1>}
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Break break>
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <__tar_try_list_archive>
                          more_env: []
                          words: [{<__tar_try_list_archive>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Break break>
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobNEqual
                                          left: {($ Id.VSub_DollarName tar_mode)}
                                          right: {<none>}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <_filedir>
                              more_env: []
                              words: [{<_filedir>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [3840 3853]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Break break>)
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ ($ Id.VSub_DollarName _TAR_OPT_DEBUG))}
                                  right: {<1>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [{<set>} {<Id.Lit_Other '+'> <x>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <unset>
                      more_env: []
                      words: [{<unset>} {<PS4>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [3873 3888]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <__tar_posix_prev_handle>
      name: __tar_posix_prev_handle
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName prev))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <-f>
                  pattern: (pat.Words words:[{<-f>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <__tar_file_option>
                      more_env: []
                      words: [{<__tar_file_option>} {(DQ ($ Id.VSub_DollarName ext))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-b>
                  pattern: (pat.Words words:[{<-b>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_posix_tar>
      name: _posix_tar
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<long_opts>}
                {<short_opts>}
                {<basic_tar>}
                {<long_arg_none>}
                {<long_arg_opt>}
                {<long_arg_req>}
                {<short_arg_none>}
                {<short_arg_opt>}
                {<short_arg_req>}
                {<tar_mode>}
                {<tar_mode_arg>}
                {<Id.Lit_VarLike 'old_opt_progress='> <0>}
                {<Id.Lit_VarLike 'old_opt_used='> <1>}
                {<Id.Lit_VarLike 'old_opt_parsed='> 
                  (ShArrayLiteral
                    left: <Id.Op_LParen _>
                    words: []
                    right: <Id.Right_ShArrayLiteral _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'tar_mode='> <none>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'tar_mode_arg='>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<cur>} {<prev>} {<words>} {<cword>} {<split>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <_init_completion>
                  more_env: []
                  words: [{<_init_completion>} {<-s>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'basic_tar='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'basic_tar='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'basic_tar='> name:basic_tar)
                  op: assign_op.Equal
                  rhs: {<yes>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'tar_mode='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'tar_mode='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tar_mode='> name:tar_mode)
                  op: assign_op.Equal
                  rhs: {<none>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'short_arg_req='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'short_arg_req='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'short_arg_req='> name:short_arg_req)
                  op: assign_op.Equal
                  rhs: {(DQ <fb>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'short_arg_none='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'short_arg_none='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'short_arg_none='> name:short_arg_none)
                  op: assign_op.Equal
                  rhs: {(DQ <wmv>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'short_opts='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'short_opts='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'short_opts='> name:short_opts)
                  op: assign_op.Equal
                  rhs: 
                    {(DQ ($ Id.VSub_DollarName short_arg_req) ($ Id.VSub_DollarName short_arg_none))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <__tar_preparse_cmdline>
              more_env: []
              words: [
                {<__tar_preparse_cmdline>}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name words>
                      var_name: words
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<ext>} {<regex>} {<tar>} {<untar>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <__tar_detect_ext>
              more_env: []
              words: [{<__tar_detect_ext>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <__tar_adjust_PREV_from_old_option>
              more_env: []
              words: [{<__tar_adjust_PREV_from_old_option>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <__tar_posix_prev_handle>
                  more_env: []
                  words: [{<__tar_posix_prev_handle>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <__tar_try_mode>
                  more_env: []
                  words: [{<__tar_try_mode>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <__tar_try_list_archive>
                  more_env: []
                  words: [{<__tar_try_list_archive>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <_filedir>
              more_env: []
              words: [{<_filedir>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_tar>
      name: _tar
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'cmd='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name COMP_WORDS>
                    var_name: COMP_WORDS
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
                {<output>}
                {<line>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <read>
              more_env: []
              words: [{<read>} {<line>}]
              redirects: [
                (Redir
                  op: <Id.Redir_TLess '<<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <Id.VSub_DollarName '$cmd'>
                              more_env: []
                              words: [{($ Id.VSub_DollarName cmd)} {<--version>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName line))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'> <GNU> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <_gtar>
                      more_env: []
                      words: [{<_gtar>} {(DQ ($ Id.VSub_At '@'))}]
                      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: <_posix_tar>
                      more_env: []
                      words: [{<_posix_tar>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name COMP_TAR_INTERNAL_PATHS>
                              var_name: COMP_TAR_INTERNAL_PATHS
                              suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <complete>
              more_env: []
              words: [{<complete>} {<-F>} {<_tar>} {<-o>} {<dirnames>} {<tar>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <complete>
              more_env: []
              words: [{<complete>} {<-F>} {<_gtar>} {<-o>} {<dirnames>} {<gtar>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <complete>
              more_env: []
              words: [{<complete>} {<-F>} {<_posix_tar>} {<-o>} {<dirnames>} {<bsdtar>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <complete>
              more_env: []
              words: [{<complete>} {<-F>} {<_posix_tar>} {<-o>} {<dirnames>} {<star>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [4253 4269]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <complete>
          more_env: []
          words: [{<complete>} {<-F>} {<_tar>} {<tar>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <complete>
          more_env: []
          words: [{<complete>} {<-F>} {<_gtar>} {<gtar>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <complete>
          more_env: []
          words: [{<complete>} {<-F>} {<_posix_tar>} {<bsdtar>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <complete>
          more_env: []
          words: [{<complete>} {<-F>} {<_posix_tar>} {<star>}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
  ]
)