(command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _protoc 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.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(--proto_path)} {(--cpp_out)} {(--java_out)} {(--python_out)}] action: [ (C {(_filedir)} {(-d)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:56) ) ] spids: [41 48 59 -1] ) (case_arm pat_list: [{(--version)} {(-h)} {(--help)} {(--encode)} {(--decode)}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:74) ) ] spids: [62 71 77 -1] ) (case_arm pat_list: [{(--descriptor_set_out)}] action: [ (C {(_filedir)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:87) ) ] spids: [80 81 90 -1] ) (case_arm pat_list: [{(--error_format)}] 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:98) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:100) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'gcc msvs' span_id: 107 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [97] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:121) ) ] spids: [93 94 124 -1] ) (case_arm pat_list: [{(--plugin)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$cur')} right: {(Id.Lit_Other '*') (Id.BoolBinary_GlobEqual '=') (Id.Lit_Other '*') } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:144) ) ] 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:157) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 159 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-c)} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [156] ) ] ) ] spids: [131 146] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:179) ) ] spids: [127 128 182 -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:193) ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$cur')} arms: [ (case_arm pat_list: [{(-o) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:211) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) } spids: [209] ) ] ) (C {(_filedir)}) (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:221) words: [ { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:225) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.PatSub pat: {} replace: {(-o)} replace_mode: Id.Lit_Pound ) ) ) } ] ) } spids: [220] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:239) ) ] spids: [204 206 242 -1] ) (case_arm pat_list: [{(-I) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:252) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) } spids: [250] ) ] ) (C {(_filedir)} {(-d)}) (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:264) words: [ { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:268) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.PatSub pat: {} replace: {(-I)} replace_mode: Id.Lit_Pound ) ) ) } ] ) } spids: [263] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:282) ) ] spids: [245 247 285 -1] ) (case_arm pat_list: [{(-) (Id.Lit_Star '*')}] 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:294) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:296) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '$( _parse_help "$1" )' span_id: 303 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [293] ) ] ) (C {(local)} {(i)}) (command.ForEach iter_name: i iter_words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:330) prefix_op: (Id.VSub_Bang) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ] do_arg_iter: F 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:343) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 345 ) ) ) ) } right: {(-oFILE)} ) ) (C {(unset)} {(SQ (Token id:Id.Lit_Chars val:'COMPREPLY[i]' span_id:360))} ) ] ) ] ) ) (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:387) ) ] spids: [288 290 390 -1] ) ] ) (C {(_filedir)} {(proto)}) ] ) ) (C {(complete)} {(-F)} {(_protoc)} {(protoc)}) ] )