(command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _postmap body: (command.BraceGroup children: [ (C {(local)} {(cur)} {(prev)} {(words)} {(cword)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_init_completion)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:26) ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(-c)}] action: [ (C {(_filedir)} {(-d)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:46) arg_word: {(0)} ) ] spids: [37 38 51 -1] ) (case_arm pat_list: [{(-) (Id.Lit_LBracket '[') (dq) (Id.Lit_RBracket ']')}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:61) arg_word: {(0)} ) ] spids: [54 58 66 -1] ) ] ) (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:85) ) ] 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:91) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:93) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '$( _parse_usage "$1" )' span_id: 100 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [90] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:114) arg_word: {(0)} ) ] spids: [73 87] ) ] ) (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: {(Id.Lit_Other '*') (Id.Lit_Other ':') (Id.Lit_Other '*')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:138) ) ] action: [ (C {(compopt)} {(-o)} {(filenames)}) (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:151) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:153) command_list: (command.CommandList children: [ (C {(compgen)} {(-f)} {(--)} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: cur span_id: 163 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('*:')} ) ) ) } ) ] ) ) } ] ) } spids: [150] ) ] ) ] spids: [123 140] ) ] else_action: [ (C {(local)} {(Id.Lit_VarLike 'len=') (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:182) prefix_op: (Id.VSub_Pound) ) } {(Id.Lit_VarLike 'idx=') (0)} {(pval)} ) (command.ForEach iter_name: pval iter_words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:197) command_list: (command.CommandList children: [ (command.Simple words: [{(/usr/sbin/postconf)} {(-m)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:203) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (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: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:pval span_id:224) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w: {(Id.Lit_Digits 0)} ) length: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$len')} ) ) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:233) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: COMPREPLY index: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$idx')} ) ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$pval') (':'))} spids: [238] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:idx) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$idx')} ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [249] ) ] ) ] spids: [212 235] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$idx')} right: {(0)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:275) ) ] action: [ (C {(compopt)} {(-o)} {(filenames)}) (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:288) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 290 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-f)} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [287] ) ] ) ] spids: [264 277] ) ] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:313) arg_word: {(0)} ) ] ) ) (C {(complete)} {(-F)} {(_postmap)} {(postmap)} {(postalias)}) ] )