(command.CommandList
  children: [
    (command.FuncDef
      name: __gtar_parse_help_opt
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opttype spids:[127])
                  op: Equal
                  spids: [127]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:arg spids:[129])
                  op: Equal
                  spids: [129]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[131])
                  op: Equal
                  spids: [131]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:separator spids:[133])
                  op: Equal
                  spids: [133]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:optvar spids:[135])
                  op: Equal
                  spids: [135]
                )
              ]
              spids: [125]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opttype spids:[138])
                  op: Equal
                  rhs: {(long)}
                  spids: [138]
                )
              ]
              spids: [138]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:arg spids:[142])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [142]
                )
              ]
              spids: [142]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[148])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [148]
                )
              ]
              spids: [148]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:separator spids:[154])
                  op: Equal
                  rhs: {(DQ (' '))}
                  spids: [154]
                )
              ]
              spids: [154]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$opt'))}
              arms: [
                (case_arm
                  pat_list: [{(--) (Lit_Other '*')}]
                  spids: [170 172 175 16777215]
                )
                (case_arm
                  pat_list: [{(-) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}]
                  action: [(command.ControlFlow token:<ControlFlow_Return return>)]
                  spids: [178 180 185 16777215]
                )
                (case_arm
                  pat_list: [{(-) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:opttype spids:[193])
                          op: Equal
                          rhs: {(short)}
                          spids: [193]
                        )
                      ]
                      spids: [193]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:opt spids:[197])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name opt>
                                suffix_op: (suffix_op.StringUnary op_id:VOp1_DPound arg_word:{(-)})
                                spids: [198 202]
                              )
                            }
                          spids: [197]
                        )
                      ]
                      spids: [197]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:separator spids:[205])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [205]
                        )
                      ]
                      spids: [205]
                    )
                  ]
                  spids: [188 190 208 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.SimpleCommand
                      words: [{(echo)} {(DQ ('not an option ') ($ VSub_DollarName '$opt'))}]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [211 212 231 16777215]
                )
              ]
              spids: [161 167 234]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[242])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name opt>
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\['>) ('*')}
                            replace: {}
                            replace_mode: Lit_Slash
                            spids: [245]
                          )
                        spids: [243 250]
                      )
                    }
                  spids: [242]
                )
              ]
              spids: [242]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[253])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name opt>
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {('=*')}
                            replace: {('=')}
                            replace_mode: Lit_Slash
                            spids: [256]
                          )
                        spids: [254 261]
                      )
                    }
                  spids: [253]
                )
              ]
              spids: [253]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[269])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name opt>
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('*')}
                            replace: {}
                            replace_mode: Lit_Slash
                            spids: [272]
                          )
                        spids: [270 277]
                      )
                    }
                  spids: [269]
                )
              ]
              spids: [269]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[280])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name opt>
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar "\\'">) ('*')}
                            replace: {}
                            replace_mode: Lit_Slash
                            spids: [283]
                          )
                        spids: [281 288]
                      )
                    }
                  spids: [280]
                )
              ]
              spids: [280]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[291])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name opt>
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\;'>) ('*')}
                            replace: {}
                            replace_mode: Lit_Slash
                            spids: [294]
                          )
                        spids: [292 299]
                      )
                    }
                  spids: [291]
                )
              ]
              spids: [291]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:optvar spids:[303])
                  op: Equal
                  rhs: {($ VSub_DollarName '$opttype') (SQ <_arg_>) ($ VSub_DollarName '$arg')}
                  spids: [303]
                )
              ]
              spids: [303]
            )
            (C {(eval)} 
              {
                (DQ ($ VSub_DollarName '$optvar') ('=') 
                  (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ($ VSub_DollarName '$optvar') 
                  ($ VSub_DollarName '$separator') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                  (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_DollarName '$opt') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                )
              }
            )
          ]
          spids: [122]
        )
      spids: [118 121]
    )
    (command.FuncDef
      name: __gtar_parse_help_line
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(lhs_expr.LhsName name:i spids:[340]) op:Equal spids:[340])]
              spids: [338]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{($ VSub_Number '$1')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ VSub_DollarName '$i'))}
                      arms: [
                        (case_arm
                          pat_list: [{(--) (Lit_Other '*')} {(-) (Lit_Other '*')}]
                          action: [
                            (C {(__gtar_parse_help_opt)} {(DQ ($ VSub_DollarName '$i'))} 
                              {(DQ ($ VSub_Number '$2'))}
                            )
                          ]
                          spids: [369 374 388 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<ControlFlow_Break break>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [396 397 16777215 404]
                        )
                      ]
                      spids: [356 362 404]
                    )
                  ]
                  spids: [353 407]
                )
              spids: [349 351]
            )
          ]
          spids: [335]
        )
      spids: [331 334]
    )
    (command.FuncDef
      name: __gnu_tar_parse_help
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:str spids:[422])
                  op: Equal
                  spids: [422]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:line spids:[424])
                  op: Equal
                  spids: [424]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:arg spids:[426])
                  op: Equal
                  spids: [426]
                )
              ]
              spids: [420]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.SimpleCommand
                      words: [{(read)} {(line)}]
                      more_env: [(env_pair name:IFS val:(word.EmptyWord) spids:[431])]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolBinary
                                      op_id: BoolBinary_EqualTilde
                                      left: {(DQ ($ VSub_DollarName '$line'))}
                                      right: 
                                        {(Lit_Other '^') (Lit_Other '[') (Lit_Other '[') 
                                          (Lit_Other ':') (blank) (Lit_Other ':') (Lit_Other ']') (Lit_Other ']') (Lit_Other '{') (1) (Lit_Other ',') (10) 
                                          (Lit_Other '}') (Lit_Other '(') (Lit_Other '(') (Lit_Other '(') (Lit_Other ',') (Lit_Other '[') (Lit_Other '[') 
                                          (Lit_Other ':') (blank) (Lit_Other ':') (Lit_Other ']') (Lit_Other ']') (Lit_Other ')') (Lit_Other '?') (Lit_Other '(') (--) 
                                          (Lit_Other '?') (Lit_Other '(') (Lit_Other '[') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\]'>) 
                                          (word_part.EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\['>
                                          ) (a-zA-Z0-9) (Lit_Other '?') (-) (Lit_Other '=') (Lit_Other ']') (Lit_Other '+') (Lit_Other ')') 
                                          (Lit_Other ')') (Lit_Other '(') (Lit_Other ',') (Lit_Other '[') (Lit_Other '[') (Lit_Other ':') (space) (Lit_Other ':') 
                                          (Lit_Other ']') (Lit_Other ']') (Lit_Other ')') (Lit_Other '?') (Lit_Other ')') (Lit_Other '+') (Lit_Other ')') 
                                          (Lit_Other .) (Lit_Other '*') (Lit_Other '$')
                                        }
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:line spids:[535])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.BracedVarSub
                                        token: <VSub_Name BASH_REMATCH>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [536 541]
                                      )
                                    }
                                  spids: [535]
                                )
                              ]
                              spids: [535]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:str spids:[544])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.BracedVarSub
                                          token: <VSub_Name line>
                                          suffix_op: 
                                            (suffix_op.PatSub
                                              pat: {(',')}
                                              replace: {(' ')}
                                              replace_mode: Lit_Slash
                                              spids: [548]
                                            )
                                          spids: [546 553]
                                        )
                                      )
                                    }
                                  spids: [544]
                                )
                              ]
                              spids: [544]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:arg spids:[574])
                                  op: Equal
                                  rhs: {(none)}
                                  spids: [574]
                                )
                              ]
                              spids: [574]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.BoolBinary
                                              op_id: BoolBinary_EqualTilde
                                              left: {(DQ ($ VSub_DollarName '$line'))}
                                              right: 
                                                {(--) (Lit_Other '[') (A-Za-z0-9-) (Lit_Other ']') 
                                                  (Lit_Other '+') (Lit_Other '(') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\['>) (Lit_Other '?') 
                                                  (Lit_Other ')') (Lit_Other '=')
                                                }
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.AndOr
                                      ops: [Op_DAmp Op_DPipe]
                                      children: [
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.BoolUnary
                                              op_id: BoolUnary_n
                                              child: 
                                                {
                                                  (DQ 
                                                    (word_part.BracedVarSub
                                                      token: <VSub_Name BASH_REMATCH>
                                                      bracket_op: 
                                                        (bracket_op.ArrayIndex
                                                          expr: 
                                                            (arith_expr.ArithWord
                                                              w: {(Lit_Digits 1)}
                                                            )
                                                        )
                                                      spids: [610 615]
                                                    )
                                                  )
                                                }
                                            )
                                        )
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:arg spids:[622])
                                              op: Equal
                                              rhs: {(opt)}
                                              spids: [622]
                                            )
                                          ]
                                          spids: [622]
                                        )
                                        (command.Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (lhs_expr.LhsName name:arg spids:[627])
                                              op: Equal
                                              rhs: {(req)}
                                              spids: [627]
                                            )
                                          ]
                                          spids: [627]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [16777215 602]
                                )
                              ]
                              spids: [16777215 631]
                            )
                            (C {(__gtar_parse_help_line)} {(DQ ($ VSub_DollarName '$str'))} 
                              {(DQ ($ VSub_DollarName '$arg'))}
                            )
                          ]
                          spids: [16777215 531]
                        )
                      ]
                      spids: [16777215 646]
                    )
                  ]
                  spids: [438 649]
                )
              redirects: [
                (redir.Redir
                  op: <Redir_TLess '<<<'>
                  fd: 16777215
                  arg_word: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: (command.CommandList children:[(C {(tar)} {(--help)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [653 657]
                        )
                      )
                    }
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_opts spids:[662])
                  op: Equal
                  rhs: 
                    {
                      (DQ ('        ') ($ VSub_DollarName '$long_arg_none') ('        ') 
                        ($ VSub_DollarName '$long_arg_opt') ('        ') ($ VSub_DollarName '$long_arg_req')
                      )
                    }
                  spids: [662]
                )
              ]
              spids: [662]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_opts spids:[677])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$short_arg_none') ($ VSub_DollarName '$short_arg_opt') 
                        ($ VSub_DollarName '$short_arg_req')
                      )
                    }
                  spids: [677]
                )
              ]
              spids: [677]
            )
          ]
          spids: [417]
        )
      spids: [413 416]
    )
    (command.FuncDef
      name: __gtar_parse_warnings
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(lhs_expr.LhsName name:line spids:[700]) op:Equal spids:[700])]
              spids: [698]
            )
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.SimpleCommand
                      words: [{(read)} {(line)}]
                      more_env: [(env_pair name:IFS val:(word.EmptyWord) spids:[705])]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolBinary
                                      op_id: BoolBinary_EqualTilde
                                      left: {($ VSub_DollarName '$line')}
                                      right: 
                                        {(Lit_Other '^') (Lit_Other '[') (Lit_Other '[') 
                                          (Lit_Other ':') (blank) (Lit_Other ':') (Lit_Other ']') (Lit_Other ']') (Lit_Other '*') (-) (Lit_Other '[') (Lit_Other '[') 
                                          (Lit_Other ':') (blank) (Lit_Other ':') (Lit_Other ']') (Lit_Other ']') (Lit_Other '*') (Lit_Other '[') 
                                          (word_part.EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\`'>
                                          ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (Lit_Other ']') (Lit_Other '(') 
                                          (Lit_Other '[') (a-zA-Z0-9-) (Lit_Other ']') (Lit_Other '+') (Lit_Other ')') 
                                          (word_part.EscapedLiteralPart
                                            token: <Lit_EscapedChar "\\'">
                                          ) (Lit_Other '$')
                                        }
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ 
                                  (word_part.BracedVarSub
                                    token: <VSub_Name BASH_REMATCH>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                      )
                                    spids: [763 768]
                                  ) (' no-') 
                                  (word_part.BracedVarSub
                                    token: <VSub_Name BASH_REMATCH>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                      )
                                    spids: [770 775]
                                  )
                                )
                              }
                            )
                          ]
                          spids: [16777215 757]
                        )
                      ]
                      spids: [16777215 779]
                    )
                  ]
                  spids: [712 782]
                )
              redirects: [
                (redir.Redir
                  op: <Redir_TLess '<<<'>
                  fd: 16777215
                  arg_word: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.SimpleCommand
                                  words: [{(tar)} {(--warning) (Lit_Other '=')}]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_GreatAnd '2>&'>
                                      fd: 2
                                      arg_word: {(1)}
                                    )
                                  ]
                                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[787])]
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [786 797]
                        )
                      )
                    }
                )
              ]
            )
          ]
          spids: [695]
        )
      spids: [691 694]
    )
    (command.FuncDef
      name: __tar_last_char
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Number 1>
                    suffix_op: 
                      (suffix_op.Slice
                        begin: 
                          (arith_expr.ArithWord
                            w: 
                              {
                                (word_part.ArithSubPart
                                  anode: 
                                    (arith_expr.ArithBinary
                                      op_id: Arith_Minus
                                      left: 
                                        (arith_expr.ArithWord
                                          w: 
                                            {
                                              (word_part.BracedVarSub
                                                token: <VSub_Number 1>
                                                prefix_op: VSub_Pound
                                                spids: [823 826]
                                              )
                                            }
                                        )
                                      right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                    )
                                  spids: [821 832]
                                )
                              }
                          )
                      )
                    spids: [817 833]
                  )
                )
              }
            )
          ]
          spids: [811]
        )
      spids: [807 810]
    )
    (command.FuncDef
      name: __tar_parse_old_opt
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:first_word spids:[849])
                  op: Equal
                  spids: [849]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:char spids:[851])
                  op: Equal
                  spids: [851]
                )
              ]
              spids: [847]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalAnd
                      left: 
                        (bool_expr.BoolBinary
                          op_id: BoolBinary_eq
                          left: {(DQ ($ VSub_DollarName '$cword'))}
                          right: {(1)}
                        )
                      right: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.BoolUnary
                              op_id: BoolUnary_n
                              child: {(DQ ($ VSub_DollarName '$cur'))}
                            )
                          right: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: 
                                {
                                  (DQ 
                                    (word_part.BracedVarSub
                                      token: <VSub_Name cur>
                                      suffix_op: 
                                        (suffix_op.Slice
                                          begin: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                          length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                        )
                                      spids: [880 886]
                                    )
                                  )
                                }
                              right: {(SQ <->)}
                            )
                        )
                    )
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:old_opt_progress spids:[901])
                      op: Equal
                      rhs: {(1)}
                      spids: [901]
                    )
                  ]
                  spids: [901]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:first_word spids:[910])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name words>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                          )
                        spids: [911 916]
                      )
                    }
                  spids: [910]
                )
              ]
              spids: [910]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalAnd
                      left: 
                        (bool_expr.BoolUnary
                          op_id: BoolUnary_n
                          child: {(DQ ($ VSub_DollarName '$first_word'))}
                        )
                      right: 
                        (bool_expr.BoolBinary
                          op_id: BoolBinary_GlobNEqual
                          left: 
                            {
                              (DQ 
                                (word_part.BracedVarSub
                                  token: <VSub_Name first_word>
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                      length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                    )
                                  spids: [930 936]
                                )
                              )
                            }
                          right: {(DQ (-))}
                        )
                    )
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:old_opt_used spids:[951])
                      op: Equal
                      rhs: {(1)}
                      spids: [951]
                    )
                  ]
                  spids: [951]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_eq
                              left: {($ VSub_DollarName '$old_opt_used')}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:char spids:[980])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name first_word>
                                suffix_op: 
                                  (suffix_op.Slice
                                    begin: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                    length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [981 987]
                              )
                            }
                          spids: [980]
                        )
                      ]
                      spids: [980]
                    )
                    (command.WhileUntil
                      keyword: <KW_While while>
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.BoolUnary
                                  op_id: BoolUnary_n
                                  child: {(DQ ($ VSub_DollarName '$char'))}
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: (C {(__tar_is_argreq)} {(DQ ($ VSub_DollarName '$char'))})
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:old_opt_parsed spids:[1018])
                                          op: PlusEqual
                                          rhs: 
                                            {
                                              (word_part.ArrayLiteralPart
                                                words: [{(DQ ($ VSub_DollarName '$char'))}]
                                              )
                                            }
                                          spids: [1018]
                                        )
                                      ]
                                      spids: [1018]
                                    )
                                  ]
                                  spids: [16777215 1015]
                                )
                              ]
                              spids: [16777215 1026]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:first_word spids:[1029])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.BracedVarSub
                                        token: <VSub_Name first_word>
                                        suffix_op: 
                                          (suffix_op.StringUnary
                                            op_id: VOp1_DPound
                                            arg_word: {($ VSub_DollarName '$char')}
                                          )
                                        spids: [1030 1034]
                                      )
                                    }
                                  spids: [1029]
                                )
                              ]
                              spids: [1029]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:char spids:[1037])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.BracedVarSub
                                        token: <VSub_Name first_word>
                                        suffix_op: 
                                          (suffix_op.Slice
                                            begin: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                            length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [1038 1044]
                                      )
                                    }
                                  spids: [1037]
                                )
                              ]
                              spids: [1037]
                            )
                          ]
                          spids: [1003 1047]
                        )
                    )
                  ]
                  spids: [16777215 977]
                )
              ]
              spids: [16777215 1050]
            )
          ]
          spids: [844]
        )
      spids: [840 843]
    )
    (command.FuncDef
      name: __tar_preparse_cmdline
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:first_arg spids:[1068])
                  op: Equal
                  spids: [1068]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:my_args spids:[1070])
                  op: Equal
                  spids: [1070]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tmparg spids:[1072])
                  op: Equal
                  spids: [1072]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:i spids:[1074])
                  op: Equal
                  spids: [1074]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:modes spids:[1076])
                  op: Equal
                  rhs: {(DQ (ctxurdA))}
                  spids: [1076]
                )
              ]
              spids: [1066]
            )
            (C {(shift)})
            (C {(__tar_parse_old_opt)})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:first_arg spids:[1094])
                  op: Equal
                  rhs: {(1)}
                  spids: [1094]
                )
              ]
              spids: [1094]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ VSub_DollarName '$i'))}
                      arms: [
                        (case_arm
                          pat_list: [{(--delete)} {(--test-label)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:tar_mode spids:[1127])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.BracedVarSub
                                        token: <VSub_Name i>
                                        suffix_op: 
                                          (suffix_op.Slice
                                            begin: (arith_expr.ArithWord w:{(Lit_Digits 2)})
                                            length: (arith_expr.ArithWord w:{(Lit_Digits 100)})
                                          )
                                        spids: [1128 1134]
                                      )
                                    }
                                  spids: [1127]
                                )
                              ]
                              spids: [1127]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:tar_mode_arg spids:[1137])
                                  op: Equal
                                  rhs: {($ VSub_DollarName '$i')}
                                  spids: [1137]
                                )
                              ]
                              spids: [1137]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [1121 1124 1144 16777215]
                        )
                        (case_arm
                          pat_list: [{(--) (Lit_Other '*')}]
                          spids: [1147 1149 1156 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(-) (Lit_Other '*') (Lit_Other '[') ($ VSub_DollarName '$modes') 
                              (Lit_Other ']') (Lit_Other '*')
                            }
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:tar_mode spids:[1168])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.BracedVarSub
                                        token: <VSub_Name i>
                                        suffix_op: 
                                          (suffix_op.PatSub
                                            pat: {('[^') ($ VSub_DollarName '$modes') (']')}
                                            replace: {}
                                            replace_mode: Lit_Slash
                                            spids: [1171]
                                          )
                                        spids: [1169 1177]
                                      )
                                    }
                                  spids: [1168]
                                )
                              ]
                              spids: [1168]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:tar_mode spids:[1180])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.BracedVarSub
                                        token: <VSub_Name tar_mode>
                                        suffix_op: 
                                          (suffix_op.Slice
                                            begin: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                            length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [1181 1187]
                                      )
                                    }
                                  spids: [1180]
                                )
                              ]
                              spids: [1180]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:tar_mode_arg spids:[1190])
                                  op: Equal
                                  rhs: {($ VSub_DollarName '$i')}
                                  spids: [1190]
                                )
                              ]
                              spids: [1190]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [1159 1165 1197 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '*') (Lit_Other '[') ($ VSub_DollarName '$modes') 
                              (Lit_Other ']') (Lit_Other '*')
                            }
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.BoolBinary
                                              op_id: BoolBinary_eq
                                              left: {($ VSub_DollarName '$first_arg')}
                                              right: {(1)}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:tar_mode spids:[1228])
                                          op: Equal
                                          rhs: 
                                            {
                                              (word_part.BracedVarSub
                                                token: <VSub_Name i>
                                                suffix_op: 
                                                  (suffix_op.PatSub
                                                    pat: {('[^') ($ VSub_DollarName '$modes') (']')}
                                                    replace: {}
                                                    replace_mode: Lit_Slash
                                                    spids: [1231]
                                                  )
                                                spids: [1229 1237]
                                              )
                                            }
                                          spids: [1228]
                                        )
                                      ]
                                      spids: [1228]
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:tar_mode spids:[1240])
                                          op: Equal
                                          rhs: 
                                            {
                                              (word_part.BracedVarSub
                                                token: <VSub_Name tar_mode>
                                                suffix_op: 
                                                  (suffix_op.Slice
                                                    begin: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                                    length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                                  )
                                                spids: [1241 1247]
                                              )
                                            }
                                          spids: [1240]
                                        )
                                      ]
                                      spids: [1240]
                                    )
                                    (command.Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (lhs_expr.LhsName name:tar_mode_arg spids:[1250])
                                          op: Equal
                                          rhs: {($ VSub_DollarName '$i')}
                                          spids: [1250]
                                        )
                                      ]
                                      spids: [1250]
                                    )
                                  ]
                                  spids: [16777215 1225]
                                )
                              ]
                              spids: [16777215 1254]
                            )
                          ]
                          spids: [1200 1205 1257 16777215]
                        )
                      ]
                      spids: [1112 1118 1260]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:first_arg spids:[1263])
                          op: Equal
                          rhs: {(0)}
                          spids: [1263]
                        )
                      ]
                      spids: [1263]
                    )
                  ]
                  spids: [1109 1267]
                )
              spids: [1103 1107]
            )
          ]
          spids: [1063]
        )
      spids: [1059 1062]
    )
    (command.FuncDef
      name: __tar_file_option
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ext spids:[1285])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [1285]
                )
              ]
              spids: [1283]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$tar_mode'))}
              arms: [
                (case_arm
                  pat_list: [{(c)}]
                  action: [(C {(_filedir)} {(-d)})]
                  spids: [1301 1302 1314 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(_filedir)} {(DQ ($ VSub_DollarName '$ext'))})]
                  spids: [1317 1318 1328 16777215]
                )
              ]
              spids: [1292 1298 1331]
            )
          ]
          spids: [1280]
        )
      spids: [1276 1279]
    )
    (command.FuncDef
      name: __tar_is_argreq
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[1352])
                  op: Equal
                  spids: [1352]
                )
              ]
              spids: [1350]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:opt spids:[1355])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1355]
                )
              ]
              spids: [1355]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$opt'))}
              arms: [
                (case_arm
                  pat_list: [{(-) (Lit_Other '[') (A-Za-z0-9) (Lit_Other '?') (Lit_Other ']')}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_DollarName '$short_arg_req'))}
                              right: 
                                {
                                  (word_part.BracedVarSub
                                    token: <VSub_Name opt>
                                    suffix_op: (suffix_op.StringUnary op_id:VOp1_DPound arg_word:{(-)})
                                    spids: [1384 1388]
                                  )
                                }
                            )
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                  spids: [1368 1373 1399 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '[') (A-Za-z0-9) (Lit_Other '?') (Lit_Other ']')}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_DollarName '$short_arg_req'))}
                              right: {(${ VSub_Name opt)}
                            )
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                  spids: [1402 1406 1430 16777215]
                )
                (case_arm
                  pat_list: [{(--) (Lit_Other '*')}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_DollarName '$long_arg_req'))}
                              right: 
                                {(Lit_Other '[') (Lit_Other '[') (Lit_Other ':') (blank) 
                                  (Lit_Other ':') (Lit_Other ']') (Lit_Other ']') ($ VSub_DollarName '$opt') (Lit_Other '=') (Lit_Other '[') (Lit_Other '[') 
                                  (Lit_Other ':') (blank) (Lit_Other ':') (Lit_Other ']') (Lit_Other ']')
                                }
                            )
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                  spids: [1433 1435 1472 16777215]
                )
              ]
              spids: [1359 1365 1475]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [1347]
        )
      spids: [1343 1346]
    )
    (command.FuncDef
      name: __tar_complete_mode
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_modes spids:[1499])
                  op: Equal
                  spids: [1499]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:has_mode spids:[1501])
                  op: Equal
                  spids: [1501]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:rawopt spids:[1503])
                  op: Equal
                  spids: [1503]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:generated spids:[1505])
                  op: Equal
                  spids: [1505]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:allshort_raw_unused spids:[1509])
                  op: Equal
                  spids: [1509]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:allshort_raw spids:[1511])
                  op: Equal
                  spids: [1511]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:filler spids:[1515])
                  op: Equal
                  spids: [1515]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:i spids:[1517])
                  op: Equal
                  spids: [1517]
                )
              ]
              spids: [1497]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_modes spids:[1521])
                  op: Equal
                  rhs: {(DQ (ctx))}
                  spids: [1521]
                )
              ]
              spids: [1521]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.BoolUnary
                      op_id: BoolUnary_z
                      child: {(DQ ($ VSub_DollarName '$basic_tar'))}
                    )
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:short_modes spids:[1539])
                      op: Equal
                      rhs: {(DQ (ctxurdA))}
                      spids: [1539]
                    )
                  ]
                  spids: [1539]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:rawopt spids:[1550])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name cur>
                        suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{(-)})
                        spids: [1551 1555]
                      )
                    }
                  spids: [1550]
                )
              ]
              spids: [1550]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:allshort_raw spids:[1563])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name short_opts>
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {('[- ]')}
                            replace: {}
                            replace_mode: Lit_Slash
                            spids: [1566]
                          )
                        spids: [1564 1570]
                      )
                    }
                  spids: [1563]
                )
              ]
              spids: [1563]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_DollarName '$tar_mode'))}
                              right: {(none)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:filler spids:[1601])
                          op: Equal
                          rhs: (word.EmptyWord)
                          spids: [1601]
                        )
                      ]
                      spids: [1601]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.LogicalAnd
                                      left: 
                                        (bool_expr.BoolUnary
                                          op_id: BoolUnary_z
                                          child: {(DQ ($ VSub_DollarName '$cur'))}
                                        )
                                      right: 
                                        (bool_expr.BoolUnary
                                          op_id: BoolUnary_z
                                          child: {(DQ ($ VSub_DollarName '$basic_tar'))}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:filler spids:[1628])
                                  op: Equal
                                  rhs: {(-)}
                                  spids: [1628]
                                )
                              ]
                              spids: [1628]
                            )
                          ]
                          spids: [16777215 1625]
                        )
                      ]
                      spids: [16777215 1632]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:generated spids:[1636])
                          op: Equal
                          rhs: {(DQ )}
                          spids: [1636]
                        )
                      ]
                      spids: [1636]
                    )
                    (command.ForExpr
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Arith_Equal
                          left: (lhs_expr.LhsName name:i spids:[1645])
                          right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                        )
                      cond: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Node_PostDPlus
                          child: (lhs_expr.LhsName name:i spids:[1654])
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:c spids:[1666])
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.BracedVarSub
                                          token: <VSub_Name short_modes>
                                          suffix_op: 
                                            (suffix_op.Slice
                                              begin: 
                                                (arith_expr.ArithWord
                                                  w: {($ VSub_DollarName '$i')}
                                                )
                                              length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                            )
                                          spids: [1668 1674]
                                        )
                                      )
                                    }
                                  spids: [1666]
                                )
                              ]
                              spids: [1664]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolUnary
                                      op_id: BoolUnary_z
                                      child: {(DQ ($ VSub_DollarName '$c'))}
                                    )
                                )
                                (command.ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:generated spids:[1693])
                                  op: PlusEqual
                                  rhs: 
                                    {
                                      (DQ (' ') ($ VSub_DollarName '$filler') 
                                        ($ VSub_DollarName '$cur') ($ VSub_DollarName '$c')
                                      )
                                    }
                                  spids: [1693]
                                )
                              ]
                              spids: [1693]
                            )
                          ]
                          spids: [1661 1702]
                        )
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1706])
                          op: Equal
                          rhs: 
                            {
                              (word_part.ArrayLiteralPart
                                words: [
                                  {
                                    (word_part.CommandSubPart
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} {(DQ ($ VSub_DollarName '$generated'))})
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [1709 1718]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [1706]
                        )
                      ]
                      spids: [1706]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                  spids: [16777215 1593]
                )
              ]
              spids: [16777215 1728]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.BoolBinary
                                  op_id: BoolBinary_eq
                                  left: {(DQ ($ VSub_DollarName '$old_opt_progress'))}
                                  right: {(0)}
                                )
                            )
                            (C {(__tar_is_argreq)} 
                              {
                                (DQ 
                                  (word_part.CommandSubPart
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(__tar_last_char)} {(DQ ($ VSub_DollarName '$cur'))})
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [1761 1767]
                                  )
                                )
                              }
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1774])
                              op: Equal
                              rhs: 
                                {
                                  (word_part.ArrayLiteralPart
                                    words: [{(DQ ($ VSub_DollarName '$cur'))}]
                                  )
                                }
                              spids: [1774]
                            )
                          ]
                          spids: [1774]
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                  spids: [16777215 1771]
                )
              ]
              spids: [16777215 1790]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:allshort_raw_unused spids:[1794])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name allshort_raw>
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {('[') ($ VSub_DollarName '$rawopt') (']')}
                            replace: {}
                            replace_mode: Lit_Slash
                            spids: [1797]
                          )
                        spids: [1795 1803]
                      )
                    }
                  spids: [1794]
                )
              ]
              spids: [1794]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {(DQ ($ VSub_DollarName '$tar_mode'))}
                              right: {(none)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:allshort_raw_unused spids:[1824])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name allshort_raw_unused>
                                suffix_op: 
                                  (suffix_op.PatSub
                                    pat: {('[') ($ VSub_DollarName '$short_modes') (']')}
                                    replace_mode: Lit_Slash
                                    spids: [1827]
                                  )
                                spids: [1825 1832]
                              )
                            }
                          spids: [1824]
                        )
                      ]
                      spids: [1824]
                    )
                  ]
                  spids: [16777215 1821]
                )
              ]
              spids: [16777215 1835]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:generated spids:[1839])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [1839]
                )
              ]
              spids: [1839]
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Arith_Equal
                  left: (lhs_expr.LhsName name:i spids:[1846])
                  right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                )
              cond: (arith_expr.ArithWord w:{(Lit_Digits 1)})
              update: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDPlus
                  child: (lhs_expr.LhsName name:i spids:[1855])
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:c spids:[1867])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.BracedVarSub
                                  token: <VSub_Name allshort_raw_unused>
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                      length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                    )
                                  spids: [1869 1875]
                                )
                              )
                            }
                          spids: [1867]
                        )
                      ]
                      spids: [1865]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolUnary
                              op_id: BoolUnary_z
                              child: {(DQ ($ VSub_DollarName '$c'))}
                            )
                        )
                        (command.ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:generated spids:[1894])
                          op: PlusEqual
                          rhs: {(DQ (' ') ($ VSub_DollarName '$cur') ($ VSub_DollarName '$c'))}
                          spids: [1894]
                        )
                      ]
                      spids: [1894]
                    )
                  ]
                  spids: [1862 1902]
                )
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1906])
                  op: Equal
                  rhs: 
                    {
                      (word_part.ArrayLiteralPart
                        words: [
                          {
                            (word_part.CommandSubPart
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} {(DQ ($ VSub_DollarName '$generated'))})
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [1909 1919]
                            )
                          }
                        ]
                      )
                    }
                  spids: [1906]
                )
              ]
              spids: [1906]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [1494]
        )
      spids: [1490 1493]
    )
    (command.FuncDef
      name: __gtar_complete_lopts
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(lhs_expr.LhsName name:rv spids:[1942]) op:Equal spids:[1942])]
              spids: [1940]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1945])
                  op: Equal
                  rhs: 
                    {
                      (word_part.ArrayLiteralPart
                        words: [
                          {
                            (word_part.CommandSubPart
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} {(DQ ($ VSub_DollarName '$long_opts'))} {(--)} 
                                      {(DQ ($ VSub_DollarName '$cur'))}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [1948 1964]
                            )
                          }
                        ]
                      )
                    }
                  spids: [1945]
                )
              ]
              spids: [1945]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:rv spids:[1969])
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [1969]
                )
              ]
              spids: [1969]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {($ VSub_DollarName '$COMPREPLY')}
                      right: {(Lit_Other '*') (BoolBinary_GlobEqual '=')}
                    )
                )
                (C {(compopt)} {(-o)} {(nospace)})
              ]
            )
            (command.ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {($ VSub_DollarName '$rv')}
            )
          ]
          spids: [1937]
        )
      spids: [1933 1936]
    )
    (command.FuncDef
      name: __gtar_complete_sopts
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:generated spids:[2010])
                  op: Equal
                  spids: [2010]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_mode_opts spids:[2012])
                  op: Equal
                  spids: [2012]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:i spids:[2014])
                  op: Equal
                  spids: [2014]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:c spids:[2016])
                  op: Equal
                  spids: [2016]
                )
              ]
              spids: [2008]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_mode_opts spids:[2019])
                  op: Equal
                  rhs: {(DQ (ctxurdA))}
                  spids: [2019]
                )
              ]
              spids: [2019]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:generated spids:[2025])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name short_opts>
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {('[') ($ VSub_DollarName '$short_mode_opts') (']')}
                            replace: {}
                            replace_mode: Lit_Slash
                            spids: [2028]
                          )
                        spids: [2026 2034]
                      )
                    }
                  spids: [2025]
                )
              ]
              spids: [2025]
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Arith_Equal
                  left: (lhs_expr.LhsName name:i spids:[2042])
                  right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                )
              cond: (arith_expr.ArithWord w:{(Lit_Digits 1)})
              update: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDPlus
                  child: (lhs_expr.LhsName name:i spids:[2051])
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:c spids:[2061])
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.BracedVarSub
                                  token: <VSub_Name allshort_raw_unused>
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                      length: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                    )
                                  spids: [2063 2069]
                                )
                              )
                            }
                          spids: [2061]
                        )
                      ]
                      spids: [2061]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolUnary
                              op_id: BoolUnary_z
                              child: {(DQ ($ VSub_DollarName '$c'))}
                            )
                        )
                        (command.ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:generated spids:[2088])
                          op: PlusEqual
                          rhs: {(DQ (' ') ($ VSub_DollarName '$cur') ($ VSub_DollarName '$c'))}
                          spids: [2088]
                        )
                      ]
                      spids: [2088]
                    )
                  ]
                  spids: [2058 2096]
                )
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2100])
                  op: Equal
                  rhs: 
                    {
                      (word_part.ArrayLiteralPart
                        words: [
                          {
                            (word_part.CommandSubPart
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-W)} {(DQ ($ VSub_DollarName '$generated'))} {(--)} 
                                      {(DQ ($ VSub_DollarName '$cur'))}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [2103 2119]
                            )
                          }
                        ]
                      )
                    }
                  spids: [2100]
                )
              ]
              spids: [2100]
            )
          ]
          spids: [2005]
        )
      spids: [2001 2004]
    )
    (command.FuncDef
      name: __tar_try_mode
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$cur'))}
              arms: [
                (case_arm
                  pat_list: [{(--) (Lit_Other '*')}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolUnary
                              op_id: BoolUnary_n
                              child: {(DQ ($ VSub_DollarName '$basic_tar'))}
                            )
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                    (C {(__gtar_complete_lopts)})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {($ VSub_QMark '$?')}
                    )
                  ]
                  spids: [2143 2145 2177 16777215]
                )
                (case_arm
                  pat_list: [{(-) (Lit_Other '*')}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolUnary
                              op_id: BoolUnary_n
                              child: {(DQ ($ VSub_DollarName '$basic_tar'))}
                            )
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(__tar_complete_mode)})
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                  spids: [2181 2183 2217 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.LogicalOr
                                      left: 
                                        (bool_expr.BoolBinary
                                          op_id: BoolBinary_eq
                                          left: {(DQ ($ VSub_DollarName '$cword'))}
                                          right: {(1)}
                                        )
                                      right: 
                                        (bool_expr.BoolBinary
                                          op_id: BoolBinary_GlobDEqual
                                          left: {(DQ ($ VSub_DollarName '$tar_mode'))}
                                          right: {(none)}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (C {(__tar_complete_mode)})
                                (command.ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(0)}
                                )
                              ]
                            )
                          ]
                          spids: [16777215 2250]
                        )
                      ]
                      spids: [16777215 2262]
                    )
                  ]
                  spids: [2221 2222 2265 16777215]
                )
              ]
              spids: [2134 2140 2268]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [2131]
        )
      spids: [2127 2130]
    )
    (command.FuncDef
      name: __tar_adjust_PREV_from_old_option
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalAnd
                              left: 
                                (bool_expr.BoolBinary
                                  op_id: BoolBinary_eq
                                  left: {(DQ ($ VSub_DollarName '$old_opt_used'))}
                                  right: {(1)}
                                )
                              right: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.BoolBinary
                                      op_id: BoolBinary_gt
                                      left: {(DQ ($ VSub_DollarName '$cword'))}
                                      right: {(1)}
                                    )
                                  right: 
                                    (bool_expr.BoolBinary
                                      op_id: BoolBinary_lt
                                      left: {(DQ ($ VSub_DollarName '$cword'))}
                                      right: 
                                        {
                                          (word_part.ArithSubPart
                                            anode: 
                                              (arith_expr.ArithBinary
                                                op_id: Arith_Plus
                                                left: 
                                                  (arith_expr.ArithWord
                                                    w: 
                                                      {
                                                        (word_part.BracedVarSub
                                                          token: <VSub_Name old_opt_parsed>
                                                          prefix_op: VSub_Pound
                                                          bracket_op: 
                                                            (bracket_op.WholeArray
                                                              op_id: Lit_At
                                                            )
                                                          spids: [2332 2338]
                                                        )
                                                      }
                                                  )
                                                right: (arith_expr.ArithWord w:{(Lit_Digits 2)})
                                              )
                                            spids: [2330 2345]
                                          )
                                        }
                                    )
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:prev spids:[2358])
                          op: Equal
                          rhs: 
                            {
                              (DQ (-) 
                                (word_part.BracedVarSub
                                  token: <VSub_Name old_opt_parsed>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: 
                                        (arith_expr.ArithBinary
                                          op_id: Arith_Minus
                                          left: (arith_expr.ArithWord w:{($ VSub_DollarName '$cword')})
                                          right: (arith_expr.ArithWord w:{(Lit_Digits 2)})
                                        )
                                    )
                                  spids: [2361 2372]
                                )
                              )
                            }
                          spids: [2358]
                        )
                      ]
                      spids: [2358]
                    )
                  ]
                  spids: [16777215 2351]
                )
              ]
              spids: [16777215 2376]
            )
          ]
          spids: [2283]
        )
      spids: [2279 2282]
    )
    (command.FuncDef
      name: __tar_extract_like_mode
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(lhs_expr.LhsName name:i spids:[2391]) op:Equal spids:[2391])]
              spids: [2389]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{(x)} {(d)} {(t)} {(delete)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_DollarName '$tar_mode'))}
                              right: {(DQ ($ VSub_DollarName '$i'))}
                            )
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                  spids: [2409 2433]
                )
              spids: [2399 2407]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [2386]
        )
      spids: [2382 2385]
    )
    (command.FuncDef
      name: __tar_try_list_archive
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tarball spids:[2453])
                  op: Equal
                  spids: [2453]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tarbin spids:[2455])
                  op: Equal
                  spids: [2455]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:untar spids:[2457])
                  op: Equal
                  spids: [2457]
                )
              ]
              spids: [2451]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(__tar_extract_like_mode)})
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(set)} {(--)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name words>
                    bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                    spids: [2485 2490]
                  )
                )
              }
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tarbin spids:[2494])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2494]
                )
              ]
              spids: [2494]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:untar spids:[2498])
                  op: Equal
                  rhs: {(DQ (tf))}
                  spids: [2498]
                )
              ]
              spids: [2498]
            )
            (C {(shift)})
            (command.SimpleCommand
              words: [{(read)} {(tarball)}]
              redirects: [
                (redir.Redir
                  op: <Redir_TLess '<<<'>
                  fd: 16777215
                  arg_word: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(printf)} {(--)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_At '$@'))})
                                    (C {(sed)} {(-n)} 
                                      {
                                        (DQ ('/^.') (Lit_Other '\\') ('{1,') (Lit_Other '\\') ('}') 
                                          ($ VSub_DollarName '$regex') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (/p)
                                        )
                                      }
                                    )
                                    (C {(tee)} {(/tmp/jetel)})
                                  ]
                                  negated: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [2514 2551]
                        )
                      )
                    }
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolUnary
                              op_id: BoolUnary_n
                              child: {(DQ ($ VSub_DollarName '$tarball'))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:IFS spids:[2573])
                          op: Equal
                          rhs: 
                            {
                              (word_part.SingleQuotedPart
                                left: <Left_DollarSingleQuote "$'">
                                tokens: [<Char_OneChar '\\n'>]
                                spids: [2574 2576]
                              )
                            }
                          spids: [2573]
                        )
                      ]
                      spids: [2571]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2579])
                          op: Equal
                          rhs: 
                            {
                              (word_part.ArrayLiteralPart
                                words: [
                                  {
                                    (word_part.CommandSubPart
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-o)} {(filenames)} {(-W)} 
                                              {
                                                (DQ 
                                                  (word_part.CommandSubPart
                                                    command_list: 
                                                      (command.CommandList
                                                        children: [
                                                          (command.WhileUntil
                                                            keyword: <KW_While while>
                                                            cond: [
                                                              (command.Sentence
                                                                child: (C {(read)} {(line)})
                                                                terminator: <Op_Semi ';'>
                                                              )
                                                            ]
                                                            body: 
                                                              (command.DoGroup
                                                                children: [
                                                                  (C {(printf)} 
                                                                    {
                                                                      (DQ ('%q') (Lit_Other '\\') (n))
                                                                    } 
                                                                    {
                                                                      (DQ 
                                                                        (word_part.CommandSubPart
                                                                          command_list: 
                                                                            (command.CommandList
                                                                              children: [
                                                                                (C {(printf)} 
                                                                                  {(Lit_Other '%') 
                                                                                    (q) (DQ (Lit_Other '\\') (n))
                                                                                  } {(DQ ($ VSub_DollarName '$line'))}
                                                                                )
                                                                              ]
                                                                            )
                                                                          left_token: 
                                                                            <Left_CommandSub '$('>
                                                                          spids: [2613 2626]
                                                                        )
                                                                      )
                                                                    }
                                                                  )
                                                                ]
                                                                spids: [2601 2630]
                                                              )
                                                            redirects: [
                                                              (redir.Redir
                                                                op: <Redir_TLess '<<<'>
                                                                fd: 16777215
                                                                arg_word: 
                                                                  {
                                                                    (DQ 
                                                                      (word_part.CommandSubPart
                                                                        command_list: 
                                                                          (command.CommandList
                                                                            children: [
                                                                              (command.SimpleCommand
                                                                                words: [
                                                                                  {
                                                                                    ($ 
VSub_DollarName '$tarbin'
                                                                                    )
                                                                                  }
                                                                                  {
                                                                                    ($ 
VSub_DollarName '$untar'
                                                                                    )
                                                                                  }
                                                                                  {
                                                                                    (DQ 
                                                                                      ($ 
VSub_DollarName '$tarball'
                                                                                      )
                                                                                    )
                                                                                  }
                                                                                ]
                                                                                redirects: [
                                                                                  (redir.Redir
                                                                                    op: 
                                                                                      <Redir_Great 
'2>'
                                                                                      >
                                                                                    fd: 2
                                                                                    arg_word: 
                                                                                      {(/dev/null)}
                                                                                  )
                                                                                ]
                                                                              )
                                                                            ]
                                                                          )
                                                                        left_token: 
                                                                          <Left_CommandSub '$('>
                                                                        spids: [2634 2645]
                                                                      )
                                                                    )
                                                                  }
                                                              )
                                                            ]
                                                          )
                                                        ]
                                                      )
                                                    left_token: <Left_CommandSub '$('>
                                                    spids: [2591 2649]
                                                  )
                                                )
                                              } {(--)} 
                                              {
                                                (DQ 
                                                  (word_part.CommandSubPart
                                                    command_list: 
                                                      (command.CommandList
                                                        children: [
                                                          (C {(printf)} 
                                                            {(DQ ('%q') (Lit_Other '\\') (n))} {(DQ ($ VSub_DollarName '$cur'))}
                                                          )
                                                        ]
                                                      )
                                                    left_token: <Left_CommandSub '$('>
                                                    spids: [2655 2667]
                                                  )
                                                )
                                              }
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [2581 2669]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [2579]
                        )
                      ]
                      spids: [2579]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                  spids: [16777215 2568]
                )
              ]
              spids: [16777215 2678]
            )
          ]
          spids: [2448]
        )
      spids: [2444 2447]
    )
    (command.FuncDef
      name: __tar_cleanup_prev
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_DollarName '$prev'))}
                              right: 
                                {(Lit_Other '^') (-) (Lit_Other '[') (a-zA-Z0-9) (Lit_Other '?') 
                                  (Lit_Other ']') (Lit_Other '*') (Lit_Other '$')
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:prev spids:[2719])
                          op: Equal
                          rhs: 
                            {
                              (DQ (-) 
                                (word_part.CommandSubPart
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(__tar_last_char)} {(DQ ($ VSub_DollarName '$prev'))})
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [2722 2728]
                                )
                              )
                            }
                          spids: [2719]
                        )
                      ]
                      spids: [2719]
                    )
                  ]
                  spids: [16777215 2712]
                )
              ]
              spids: [16777215 2732]
            )
          ]
          spids: [2687]
        )
      spids: [2683 2686]
    )
    (command.FuncDef
      name: __tar_detect_ext
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tars spids:[2746])
                  op: Equal
                  rhs: {(SQ <'@(@(tar|gem|spkg)?(.@(Z|[bgx]z|bz2|lz?(ma)))|t@([abglx]z|b?(z)2))'>)}
                  spids: [2746]
                )
              ]
              spids: [2744]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ext spids:[2752])
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$tars'))}
                  spids: [2752]
                )
              ]
              spids: [2752]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:regex spids:[2758])
                  op: Equal
                  rhs: 
                    {
                      (SQ 
                        <
'\\(\\(tar\\|gem\\|spkg\\)\\(\\.\\(Z\\|[bgx]z\\|bz2\\|lz\\(ma\\)\\?\\)\\)\\?\\|t\\([abglx]z\\|bz\\?2\\)\\)'
                        >
                      )
                    }
                  spids: [2758]
                )
              ]
              spids: [2758]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$tar_mode_arg'))}
              arms: [
                (case_arm
                  pat_list: [{(--) (Lit_Other '*')}]
                  spids: [2774 2776 2783 16777215]
                )
                (case_arm
                  pat_list: [
                    {(word_part.ExtGlobPart op:<ExtGlob_QMark '?('> arms:[{(-)}] spids:[2786 2788]) 
                      (Lit_Other '*') (Lit_Other '[') (cr) (Lit_Other ']') (Lit_Other '*') (f)
                    }
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ext spids:[2798])
                          op: Equal
                          rhs: {(SQ <'@(tar|gem|spkg)'>)}
                          spids: [2798]
                        )
                      ]
                      spids: [2798]
                    )
                    (command.Case
                      to_match: 
                        {
                          (word_part.BracedVarSub
                            token: <VSub_Name words>
                            bracket_op: 
                              (bracket_op.ArrayIndex
                                expr: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                              )
                            spids: [2806 2811]
                          )
                        }
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '*') (a) (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[2821])
                                  op: Equal
                                  rhs: {(DQ ($ VSub_DollarName '$tars'))}
                                  spids: [2821]
                                )
                              ]
                              spids: [2821]
                            )
                          ]
                          spids: [2816 2819 2826 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*') (z) (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[2834])
                                  op: Equal
                                  rhs: {(SQ <'t?(ar.)gz'>)}
                                  spids: [2834]
                                )
                              ]
                              spids: [2834]
                            )
                          ]
                          spids: [2829 2832 2839 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*') (Z) (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[2847])
                                  op: Equal
                                  rhs: {(SQ <'ta@(r.Z|z)'>)}
                                  spids: [2847]
                                )
                              ]
                              spids: [2847]
                            )
                          ]
                          spids: [2842 2845 2852 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(Lit_Other '*') (Lit_Other '[') (jy) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[2862])
                                  op: Equal
                                  rhs: {(SQ <'t@(?(ar.)bz?(2)|b2)'>)}
                                  spids: [2862]
                                )
                              ]
                              spids: [2862]
                            )
                          ]
                          spids: [2855 2860 2867 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*') (J) (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:ext spids:[2875])
                                  op: Equal
                                  rhs: {(SQ <'t?(ar.)xz'>)}
                                  spids: [2875]
                                )
                              ]
                              spids: [2875]
                            )
                          ]
                          spids: [2870 2873 2880 16777215]
                        )
                      ]
                      spids: [2804 2813 2883]
                    )
                  ]
                  spids: [2786 2795 2886 16777215]
                )
                (case_arm
                  pat_list: [
                    {
                      (word_part.ExtGlobPart
                        op: <ExtGlob_Plus '+('>
                        arms: [{('[^ZzJjy]')}]
                        spids: [2889 2891]
                      ) (f)
                    }
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ext spids:[2896])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$tars'))}
                          spids: [2896]
                        )
                      ]
                      spids: [2896]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:regex spids:[2902])
                          op: Equal
                          rhs: 
                            {
                              (SQ 
                                <
'\\(\\(tar\\|gem\\|spkg\\)\\(\\.\\(Z\\|[bgx]z\\|bz2\\|lz\\(ma\\)\\?\\)\\)\\?\\|t\\([abglx]z\\|bz\\?2\\)\\)'
                                >
                              )
                            }
                          spids: [2902]
                        )
                      ]
                      spids: [2902]
                    )
                  ]
                  spids: [2889 2893 2908 16777215]
                )
                (case_arm
                  pat_list: [
                    {(Lit_Other '*') (Lit_Other '[') (Zz) (Lit_Other ']') (Lit_Other '*') (f)}
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ext spids:[2920])
                          op: Equal
                          rhs: {(SQ <'@(@(t?(ar.)|gem.|spkg.)@(gz|Z)|taz)'>)}
                          spids: [2920]
                        )
                      ]
                      spids: [2920]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:regex spids:[2926])
                          op: Equal
                          rhs: 
                            {
                              (SQ 
                                <
'\\(\\(t\\(ar\\.\\)\\?\\|gem\\.\\|spkg\\.\\)\\(gz\\|Z\\)\\|taz\\)'
                                >
                              )
                            }
                          spids: [2926]
                        )
                      ]
                      spids: [2926]
                    )
                  ]
                  spids: [2911 2917 2932 16777215]
                )
                (case_arm
                  pat_list: [
                    {(Lit_Other '*') (Lit_Other '[') (jy) (Lit_Other ']') (Lit_Other '*') (f)}
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ext spids:[2944])
                          op: Equal
                          rhs: {(SQ <'@(@(t?(ar.)|gem.)bz?(2)|spkg|tb2)'>)}
                          spids: [2944]
                        )
                      ]
                      spids: [2944]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:regex spids:[2950])
                          op: Equal
                          rhs: {(SQ <'\\(\\(t\\(ar\\.\\)\\?\\|gem\\.\\)bz2\\?\\|spkg\\|tb2\\)'>)}
                          spids: [2950]
                        )
                      ]
                      spids: [2950]
                    )
                  ]
                  spids: [2935 2941 2956 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (Lit_Other '[') (J) (Lit_Other ']') (Lit_Other '*') (f)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:ext spids:[2968])
                          op: Equal
                          rhs: {(SQ <'@(@(tar|gem|spkg).@(lzma|xz)|t[lx]z)'>)}
                          spids: [2968]
                        )
                      ]
                      spids: [2968]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:regex spids:[2974])
                          op: Equal
                          rhs: {(SQ <'\\(\\(tar\\|gem\\|spkg\\)\\.\\(lzma\\|xz\\)\\|t[lx]z\\)'>)}
                          spids: [2974]
                        )
                      ]
                      spids: [2974]
                    )
                  ]
                  spids: [2959 2965 2980 16777215]
                )
              ]
              spids: [2765 2771 2983]
            )
          ]
          spids: [2741]
        )
      spids: [2737 2740]
    )
    (command.FuncDef
      name: _gtar
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_opts spids:[2998])
                  op: Equal
                  spids: [2998]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_opts spids:[3000])
                  op: Equal
                  spids: [3000]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_arg_none spids:[3004])
                  op: Equal
                  spids: [3004]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_arg_opt spids:[3006])
                  op: Equal
                  spids: [3006]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_arg_req spids:[3008])
                  op: Equal
                  spids: [3008]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_arg_none spids:[3012])
                  op: Equal
                  spids: [3012]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_arg_opt spids:[3014])
                  op: Equal
                  spids: [3014]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_arg_req spids:[3016])
                  op: Equal
                  spids: [3016]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode spids:[3020])
                  op: Equal
                  spids: [3020]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode_arg spids:[3022])
                  op: Equal
                  spids: [3022]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:old_opt_progress spids:[3024])
                  op: Equal
                  rhs: {(0)}
                  spids: [3024]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:old_opt_used spids:[3029])
                  op: Equal
                  rhs: {(0)}
                  spids: [3029]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:old_opt_parsed spids:[3032])
                  op: Equal
                  rhs: {(word_part.ArrayLiteralPart)}
                  spids: [3032]
                )
              ]
              spids: [2996]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode spids:[3044])
                  op: Equal
                  rhs: {(none)}
                  spids: [3044]
                )
              ]
              spids: [3042]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode_arg spids:[3059])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [3059]
                )
              ]
              spids: [3057]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_DollarName '$_TAR_OPT_DEBUG'))}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(set)} {(-x)})
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:PS4 spids:[3086])
                          op: Equal
                          rhs: 
                            {
                              (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                                ('BASH_SOURCE:') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('LINENO: ')
                              )
                            }
                          spids: [3086]
                        )
                      ]
                      spids: [3086]
                    )
                  ]
                  spids: [16777215 3078]
                )
              ]
              spids: [16777215 3095]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:cur spids:[3101])
                  op: Equal
                  spids: [3101]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:prev spids:[3103])
                  op: Equal
                  spids: [3103]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:words spids:[3105])
                  op: Equal
                  spids: [3105]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:cword spids:[3107])
                  op: Equal
                  spids: [3107]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:split spids:[3109])
                  op: Equal
                  spids: [3109]
                )
              ]
              spids: [3099]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(_init_completion)} {(-s)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (C {(__gnu_tar_parse_help)})
            (C {(__tar_preparse_cmdline)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name words>
                    bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                    spids: [3134 3139]
                  )
                )
              }
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ext spids:[3146])
                  op: Equal
                  spids: [3146]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:regex spids:[3148])
                  op: Equal
                  spids: [3148]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar spids:[3150])
                  op: Equal
                  spids: [3150]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:untar spids:[3152])
                  op: Equal
                  spids: [3152]
                )
              ]
              spids: [3144]
            )
            (C {(__tar_detect_ext)})
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [(command.Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
              body: 
                (command.DoGroup
                  children: [
                    (C {(__tar_adjust_PREV_from_old_option)})
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(__tar_posix_prev_handle)})
                        (command.ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (C {(__tar_cleanup_prev)})
                    (command.Case
                      to_match: {($ VSub_DollarName '$prev')}
                      arms: [
                        (case_arm
                          pat_list: [{(-C)} {(--directory)}]
                          action: [
                            (C {(_filedir)} {(-d)})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3204 3207 3218 16777215]
                        )
                        (case_arm
                          pat_list: [{(--atime-preserve)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[3225])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.ArrayLiteralPart
                                        words: [
                                          {
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-W)} {(SQ <'replace system'>)} 
                                                      {(--)} {(DQ ($ VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3228 3244]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [3225]
                                )
                              ]
                              spids: [3225]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3221 3222 3252 16777215]
                        )
                        (case_arm
                          pat_list: [{(--group)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[3259])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.ArrayLiteralPart
                                        words: [
                                          {
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-g)} {(--)} 
                                                      {(DQ ($ VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3262 3274]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [3259]
                                )
                              ]
                              spids: [3259]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3255 3256 3282 16777215]
                        )
                        (case_arm
                          pat_list: [{(--owner)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[3289])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.ArrayLiteralPart
                                        words: [
                                          {
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-u)} {(--)} 
                                                      {(DQ ($ VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3292 3304]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [3289]
                                )
                              ]
                              spids: [3289]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3285 3286 3312 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(-F)}
                            {(--info-script)}
                            {(--new-volume-script)}
                            {(--rmt-command)}
                            {(--rsh-command)}
                            {(-I)}
                            {(--use-compress-program)}
                          ]
                          action: [
                            (C {(compopt)} {(-o)} {(filenames)})
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[3340])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.ArrayLiteralPart
                                        words: [
                                          {
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-c)} {(--)} 
                                                      {(DQ ($ VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3343 3355]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [3340]
                                )
                              ]
                              spids: [3340]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3315 3330 3363 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(--volno-file)}
                            {(--add-file)}
                            {(-T)}
                            {(--files-from)}
                            {(-X)}
                            {(--exclude-from)}
                            {(--index-file)}
                            {(--listed-incremental)}
                            {(-g)}
                          ]
                          action: [
                            (C {(_filedir)})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3366 3385 3394 16777215]
                        )
                        (case_arm
                          pat_list: [{(-H)} {(--format)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[3403])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.ArrayLiteralPart
                                        words: [
                                          {
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-W)} 
                                                      {(SQ <'gnu oldgnu pax posix ustar v7'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3406 3424]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [3403]
                                )
                              ]
                              spids: [3403]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3397 3400 3432 16777215]
                        )
                        (case_arm
                          pat_list: [{(--quoting-style)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[3439])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.ArrayLiteralPart
                                        words: [
                                          {
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-W)} 
                                                      {
                                                        (SQ 
                                                          <
'literal shell shell-always c c-maybe\n'
                                                          > <'                    escape locale clocale'>
                                                        )
                                                      } {(--)} {(DQ ($ VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3442 3459]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [3439]
                                )
                              ]
                              spids: [3439]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3435 3436 3467 16777215]
                        )
                        (case_arm
                          pat_list: [{(--totals)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[3474])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.ArrayLiteralPart
                                        words: [
                                          {
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-W)} 
                                                      {
                                                        (SQ <'SIGHUP SIGQUIT SIGINT SIGUSR1 SIGUSR2'>)
                                                      } {(--)} {(DQ ($ VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3477 3495]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [3474]
                                )
                              ]
                              spids: [3474]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3470 3471 3503 16777215]
                        )
                        (case_arm
                          pat_list: [{(--warning)}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[3510])
                                  op: Equal
                                  rhs: 
                                    {
                                      (word_part.ArrayLiteralPart
                                        words: [
                                          {
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(compgen)} {(-W)} 
                                                      {
                                                        (DQ 
                                                          (word_part.CommandSubPart
                                                            command_list: 
                                                              (command.CommandList
                                                                children: [
                                                                  (C {(__gtar_parse_warnings)})
                                                                ]
                                                              )
                                                            left_token: <Left_CommandSub '$('>
                                                            spids: [3520 3522]
                                                          )
                                                        )
                                                      } {(--)} {(DQ ($ VSub_DollarName '$cur'))}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3513 3531]
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [3510]
                                )
                              ]
                              spids: [3510]
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3506 3507 3539 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(--file)}
                            {(-f)}
                            {(-) 
                              (word_part.ExtGlobPart
                                op: <ExtGlob_Bang '!('>
                                arms: [{(-) (Lit_Other '*')}]
                                spids: [3547 3550]
                              ) (f)
                            }
                          ]
                          action: [
                            (C {(__tar_file_option)} {(DQ ($ VSub_DollarName '$ext'))})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3542 3552 3565 16777215]
                        )
                        (case_arm
                          pat_list: [{(--) (Lit_Other '*')}]
                          action: [
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolBinary
                                      op_id: BoolBinary_EqualTilde
                                      left: {(DQ (' ') ($ VSub_DollarName '$long_arg_req') (' '))}
                                      right: 
                                        {
                                          (word_part.EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\ '>
                                          ) ($ VSub_DollarName '$prev') (Lit_Other '=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\ '>)
                                        }
                                    )
                                )
                                (command.ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolBinary
                                      op_id: BoolBinary_EqualTilde
                                      left: {(DQ (' ') ($ VSub_DollarName '$long_arg_opt') (' '))}
                                      right: 
                                        {
                                          (word_part.EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\ '>
                                          ) ($ VSub_DollarName '$prev') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\ '>)
                                        }
                                    )
                                )
                                (command.ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (C {($ VSub_DollarName '$split')})
                                (command.ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                          spids: [3568 3570 3658 16777215]
                        )
                        (case_arm
                          pat_list: [{(-) (Lit_Other '[') (a-zA-Z0-9) (Lit_Other '?') (Lit_Other ']')}]
                          action: [
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolBinary
                                      op_id: BoolBinary_EqualTilde
                                      left: {(DQ ($ VSub_DollarName '$short_arg_req'))}
                                      right: 
                                        {
                                          (word_part.BracedVarSub
                                            token: <VSub_Name prev>
                                            suffix_op: 
                                              (suffix_op.StringUnary
                                                op_id: VOp1_DPound
                                                arg_word: {(-)}
                                              )
                                            spids: [3681 3685]
                                          )
                                        }
                                    )
                                )
                                (command.ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                          spids: [3661 3666 3694 16777215]
                        )
                      ]
                      spids: [3197 3201 3697]
                    )
                    (command.Case
                      to_match: {(DQ ($ VSub_DollarName '$cur'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(-) (Lit_Other '[') (a-zA-Z0-9) (Lit_ArrayLhsClose ']=') (Lit_Other '*')}
                          ]
                          action: [(command.ControlFlow token:<ControlFlow_Break break>)]
                          spids: [3714 3719 3729 16777215]
                        )
                      ]
                      spids: [3705 3711 3732]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(__tar_try_mode)})
                        (command.ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ VSub_DollarName '$cur'))}
                      arms: [
                        (case_arm
                          pat_list: [{(--) (Lit_Other '*')}]
                          action: [
                            (C {(__gtar_complete_lopts)})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3765 3767 3776 16777215]
                        )
                        (case_arm
                          pat_list: [{(-) (Lit_Other '*')}]
                          action: [
                            (C {(__gtar_complete_sopts)})
                            (command.ControlFlow
                              token: <ControlFlow_Break break>
                            )
                          ]
                          spids: [3779 3781 3794 16777215]
                        )
                      ]
                      spids: [3756 3762 3797]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_eq
                              left: {(DQ ($ VSub_DollarName '$cword'))}
                              right: {(1)}
                            )
                        )
                        (command.ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(__tar_try_list_archive)})
                        (command.ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.BoolBinary
                                      op_id: BoolBinary_GlobNEqual
                                      left: {($ VSub_DollarName '$tar_mode')}
                                      right: {(none)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(_filedir)})]
                          spids: [16777215 3852]
                        )
                      ]
                      spids: [16777215 3858]
                    )
                    (command.ControlFlow token:<ControlFlow_Break break>)
                  ]
                  spids: [3165 3865]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ ($ VSub_DollarName '$_TAR_OPT_DEBUG'))}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(set)} {(Lit_Other '+') (x)}) (C {(unset)} {(PS4)})]
                  spids: [16777215 3887]
                )
              ]
              spids: [16777215 3901]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2993]
        )
      spids: [2989 2992]
    )
    (command.FuncDef
      name: __tar_posix_prev_handle
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$prev'))}
              arms: [
                (case_arm
                  pat_list: [{(-f)}]
                  action: [
                    (C {(__tar_file_option)} {(DQ ($ VSub_DollarName '$ext'))})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                  spids: [3929 3930 3945 16777215]
                )
                (case_arm
                  pat_list: [{(-b)}]
                  action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [3948 3949 16777215 3957]
                )
              ]
              spids: [3920 3926 3957]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [3917]
        )
      spids: [3913 3916]
    )
    (command.FuncDef
      name: _posix_tar
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_opts spids:[3978])
                  op: Equal
                  spids: [3978]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_opts spids:[3980])
                  op: Equal
                  spids: [3980]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:basic_tar spids:[3982])
                  op: Equal
                  spids: [3982]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_arg_none spids:[3986])
                  op: Equal
                  spids: [3986]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_arg_opt spids:[3988])
                  op: Equal
                  spids: [3988]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:long_arg_req spids:[3990])
                  op: Equal
                  spids: [3990]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_arg_none spids:[3994])
                  op: Equal
                  spids: [3994]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_arg_opt spids:[3996])
                  op: Equal
                  spids: [3996]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_arg_req spids:[3998])
                  op: Equal
                  spids: [3998]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode spids:[4002])
                  op: Equal
                  spids: [4002]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode_arg spids:[4004])
                  op: Equal
                  spids: [4004]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:old_opt_progress spids:[4006])
                  op: Equal
                  rhs: {(0)}
                  spids: [4006]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:old_opt_used spids:[4011])
                  op: Equal
                  rhs: {(1)}
                  spids: [4011]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:old_opt_parsed spids:[4014])
                  op: Equal
                  rhs: {(word_part.ArrayLiteralPart)}
                  spids: [4014]
                )
              ]
              spids: [3976]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode spids:[4026])
                  op: Equal
                  rhs: {(none)}
                  spids: [4026]
                )
              ]
              spids: [4024]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode_arg spids:[4037])
                  op: Equal
                  rhs: (word.EmptyWord)
                  spids: [4037]
                )
              ]
              spids: [4035]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:cur spids:[4043])
                  op: Equal
                  spids: [4043]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:prev spids:[4045])
                  op: Equal
                  spids: [4045]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:words spids:[4047])
                  op: Equal
                  spids: [4047]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:cword spids:[4049])
                  op: Equal
                  spids: [4049]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:split spids:[4051])
                  op: Equal
                  spids: [4051]
                )
              ]
              spids: [4041]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(_init_completion)} {(-s)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:basic_tar spids:[4065])
                  op: Equal
                  rhs: {(yes)}
                  spids: [4065]
                )
              ]
              spids: [4065]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar_mode spids:[4069])
                  op: Equal
                  rhs: {(none)}
                  spids: [4069]
                )
              ]
              spids: [4069]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_arg_req spids:[4082])
                  op: Equal
                  rhs: {(DQ (fb))}
                  spids: [4082]
                )
              ]
              spids: [4082]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_arg_none spids:[4088])
                  op: Equal
                  rhs: {(DQ (wmv))}
                  spids: [4088]
                )
              ]
              spids: [4088]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:short_opts spids:[4094])
                  op: Equal
                  rhs: 
                    {(DQ ($ VSub_DollarName '$short_arg_req') ($ VSub_DollarName '$short_arg_none'))}
                  spids: [4094]
                )
              ]
              spids: [4094]
            )
            (C {(__tar_preparse_cmdline)} 
              {
                (DQ 
                  (word_part.BracedVarSub
                    token: <VSub_Name words>
                    bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                    spids: [4105 4110]
                  )
                )
              }
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:ext spids:[4117])
                  op: Equal
                  spids: [4117]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:regex spids:[4119])
                  op: Equal
                  spids: [4119]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tar spids:[4121])
                  op: Equal
                  spids: [4121]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:untar spids:[4123])
                  op: Equal
                  spids: [4123]
                )
              ]
              spids: [4115]
            )
            (C {(__tar_detect_ext)})
            (C {(__tar_adjust_PREV_from_old_option)})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(__tar_posix_prev_handle)})
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [(C {(__tar_try_mode)}) (command.ControlFlow token:<ControlFlow_Return return>)]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(__tar_try_list_archive)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (C {(_filedir)})
          ]
          spids: [3973]
        )
      spids: [3969 3972]
    )
    (command.FuncDef
      name: _tar
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:cmd spids:[4180])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name COMP_WORDS>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                          )
                        spids: [4181 4186]
                      )
                    }
                  spids: [4180]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:output spids:[4188])
                  op: Equal
                  spids: [4188]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:line spids:[4190])
                  op: Equal
                  spids: [4190]
                )
              ]
              spids: [4178]
            )
            (command.SimpleCommand
              words: [{(read)} {(line)}]
              redirects: [
                (redir.Redir
                  op: <Redir_TLess '<<<'>
                  fd: 16777215
                  arg_word: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [(C {($ VSub_DollarName '$cmd')} {(--version)})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [4199 4203]
                        )
                      )
                    }
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$line'))}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (GNU) (Lit_Other '*')}]
                  action: [(C {(_gtar)} {(DQ ($ VSub_At '$@'))})]
                  spids: [4216 4219 4229 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(_posix_tar)} {(DQ ($ VSub_At '$@'))})]
                  spids: [4232 4233 4243 16777215]
                )
              ]
              spids: [4207 4213 4246]
            )
          ]
          spids: [4175]
        )
      spids: [4171 4174]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} 
                  {
                    (DQ 
                      (word_part.BracedVarSub
                        token: <VSub_Name COMP_TAR_INTERNAL_PATHS>
                        suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:(word.EmptyWord))
                        spids: [4259 4262]
                      )
                    )
                  } {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(complete)} {(-F)} {(_tar)} {(-o)} {(dirnames)} {(tar)})
            (C {(complete)} {(-F)} {(_gtar)} {(-o)} {(dirnames)} {(gtar)})
            (C {(complete)} {(-F)} {(_posix_tar)} {(-o)} {(dirnames)} {(bsdtar)})
            (C {(complete)} {(-F)} {(_posix_tar)} {(-o)} {(dirnames)} {(star)})
          ]
          spids: [16777215 4268]
        )
      ]
      else_action: [
        (C {(complete)} {(-F)} {(_tar)} {(tar)})
        (C {(complete)} {(-F)} {(_gtar)} {(gtar)})
        (C {(complete)} {(-F)} {(_posix_tar)} {(bsdtar)})
        (C {(complete)} {(-F)} {(_posix_tar)} {(star)})
      ]
      spids: [4322 4360]
    )
  ]
)