(command.CommandList children: [ (command.ShFunction name: _asdf body: (BraceGroup children: [ (C {<local>} {<cur>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name COMP_WORDS> bracket_op: (bracket_op.ArrayIndex expr:<Id.Lit_ArithVarLike COMP_CWORD>) ) } spids: [17] ) ] ) (C {<local>} {<cmd>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name COMP_WORDS> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) } spids: [31] ) ] ) (C {<local>} {<prev>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name COMP_WORDS> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Minus left: <Id.Lit_ArithVarLike COMP_CWORD> right: {<Id.Lit_Digits 1>} ) ) ) } spids: [45] ) ] ) (C {<local>} {<plugins>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:plugins) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<asdf>} {<plugin-list>}) (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)}) ] negated: F ) ) } spids: [61] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [82] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))} arms: [ (case_arm pat_list: [{<plugin-update>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$plugins') <' --all'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [101] ) ] ) ] spids: [97 98 122 -1] ) (case_arm pat_list: [{<plugin-remove>} {<current>} {<list>} {<list-all>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$plugins'))} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [135] ) ] ) ] spids: [125 132 155 -1] ) (case_arm pat_list: [{<install>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$plugins'))} right: {<Id.Lit_Other '*'> (DQ ($ Id.VSub_DollarName '$prev')) <Id.Lit_Other '*'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<versions>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:versions) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<asdf>} {<list-all>} {(DQ ($ Id.VSub_DollarName '$prev'))}) ) } spids: [190] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$versions'))} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [202] ) ] ) ] spids: [162 182] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$plugins'))} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [225] ) ] ) ] ) ] spids: [158 159 248 -1] ) (case_arm pat_list: [{<uninstall>} {<where>} {<reshim>} {<local>} {<global>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$plugins'))} right: {<Id.Lit_Other '*'> (DQ ($ Id.VSub_DollarName '$prev')) <Id.Lit_Other '*'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<versions>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:versions) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<asdf>} {<list>} {(DQ ($ Id.VSub_DollarName '$prev'))}) ) } spids: [291] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$versions'))} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [303] ) ] ) ] spids: [263 283] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$plugins'))} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [326] ) ] ) ] ) ] spids: [251 260 349 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<local>} {<Id.Lit_VarLike 'cmds='> (SQ < 'plugin-add plugin-list plugin-remove plugin-update install uninstall update current where which list list-all local global reshim' > ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$cmds'))} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [364] ) ] ) ] spids: [352 353 384 -1] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (C {<complete>} {<-F>} {<_asdf>} {<asdf>}) ] )