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