(command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _info body: (command.BraceGroup children: [ (C {(local)} {(cur)} {(prev)} {(words)} {(cword)} {(split)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_init_completion)} {(-s)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:30) ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_expand)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:38) arg_word: {(0)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: { (word_part.ExtGlob op: (Token id:Id.ExtGlob_At val:'@(' span_id:58) arms: [{(Id.Lit_Other '*') (/)} {('[.~]')}] ) (Id.Lit_Other '*') } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:67) ) ] action: [ (C {(_filedir)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:75) arg_word: {(0)} ) ] spids: [48 69] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [ {(-k)} {(--apropos)} {(--index-search)} {(-n)} {(--node)} {(-h)} {(--help)} {(-v)} {(--version)} ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:111) ) ] spids: [91 108 114 -1] ) (case_arm pat_list: [{(-d)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:126) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) } right: {(info)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:137) ) ] action: [ (C {(_filedir)} {(-d)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:147) ) ] spids: [121 139] ) ] ) ] spids: [117 118 153 -1] ) (case_arm pat_list: [{(--directory)}] action: [ (C {(_filedir)} {(-d)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:165) ) ] spids: [156 157 168 -1] ) (case_arm pat_list: [ {(--dribble)} {(-f)} {(--file)} {(-o)} {(--output)} {(--restore)} {(-r)} {(--raw-filename)} {(--rcfile)} ] action: [ (C {(_filedir)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:194) ) ] spids: [171 188 197 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$split')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:208) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$cur')} right: {(-) (Id.Lit_Other '*')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:224) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:230) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:232) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '$( _parse_help "$1" )' span_id: 239 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [229] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$COMPREPLY')} right: {(Id.Lit_Other '*') (Id.BoolBinary_GlobEqual '=')} ) ) (C {(compopt)} {(-o)} {(nospace)}) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:273) ) ] spids: [212 226] ) ] ) (C {(local)} {(i)} {(Id.Lit_VarLike 'infopath=') (/usr/share/info)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$INFOPATH')} right: {(Id.Lit_Other '*') (Id.Lit_Other ':')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:301) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:infopath) op: assign_op.Equal rhs: {(${ Id.VSub_Name INFOPATH) (${ Id.VSub_Name infopath)} spids: [306] ) ] ) ] spids: [289 303] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w: { (braced_var_sub token: (Token id:Id.VSub_Name val:INFOPATH span_id:320) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(set)} ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:326) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:infopath) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$INFOPATH')} spids: [331] ) ] ) ] spids: [315 328] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:infopath) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$infopath') (Id.Lit_Other ':')} spids: [339] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$cur')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:353) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:infopath) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:infopath span_id:361) suffix_op: (suffix_op.PatSub pat: {(':')} replace: {(Id.Lit_Slash /) ($ Id.VSub_DollarName '$cur') ('* ')} replace_mode: Id.Lit_Slash ) ) ) } spids: [358] ) ] ) ] spids: [344 355] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:infopath) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:infopath span_id:379) suffix_op: (suffix_op.PatSub pat: {(':')} replace: {(Id.Lit_Slash /) (' ')} replace_mode: Id.Lit_Slash ) ) ) } spids: [376] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:399) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:401) command_list: (command.CommandList children: [ (command.Simple words: [ {(eval)} {(command)} {(ls)} {(DQ ($ Id.VSub_DollarName '$infopath'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:413) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } ] ) } spids: [398] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:426) words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:429) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /) ('?(:)')} ) ) } ] ) } spids: [425] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:i span_id:456)) right: (arith_expr.ArithWord w: { (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:462) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) ) update: (arith_expr.UnaryAssign op_id:Id.Arith_DPlus child:(sh_lhs_expr.Name name:i)) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:483) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')}) ) ) } right: {(dir)} ) ) (C {(unset)} {(DQ ('COMPREPLY[') ($ Id.VSub_DollarName '$i') (']'))}) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:514) words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:517) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {('.@(gz|bz2|xz|lzma)')} ) ) } ] ) } spids: [513] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:529) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:531) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '${COMPREPLY[@]%.*}' span_id: 538 ) ) } {(--)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:545) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\\\' span_id: 548 ) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:549)) } replace: (word.Empty) replace_mode: Id.Lit_Slash ) ) ) } ) ] ) ) } ] ) } spids: [528] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:560) arg_word: {(0)} ) ] ) ) (C {(complete)} {(-F)} {(_info)} {(info)} {(pinfo)}) ] )