(AndOr OP_AND_IF (FunctionDef _pkgadd [] (List (= scope= flags=0 words=[{[LIT_CHARS cur]}, {[LIT_CHARS prev]}, {[LIT_CHARS words]}, {[LIT_CHARS cword]}] bindings=[]) (AndOr OP_OR_IF (Com {[LIT_CHARS _init_completion]} {[LIT_CHARS -n]} {[LIT_OTHER ":"]} ) (Com {[LIT_CHARS return]} ) ) (= scope= flags=0 words=[] bindings=[('device', {[LIT_CHARS /var/spool/pkg]})]) (= scope= flags=0 words=[] bindings=[('i', {[VarSub cword]})]) (While (DBracket {B2 BINARY_INT_GT {[ArithSub {A1 AS_OP_DMINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} }]} {[LIT_CHARS 0]}}) (Case to_match={[DQ [VarSub words bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]]}, pat_word_list=[[{[LIT_CHARS -d]}]] (List (= scope= flags=0 words=[] bindings=[('device', {[DQ [VarSub words bracket_op=(Index {A Atom NODE_ARITH_WORD {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]}})]]})]) (Com {[LIT_CHARS break]} ) ) ) ) (Case to_match={[VarSub prev]}, pat_word_list=[[{[LIT_CHARS -d]}], [{[LIT_CHARS -a]}, {[LIT_CHARS -r]}, {[LIT_CHARS -V]}], [{[LIT_CHARS -k]}, {[LIT_CHARS -s]}, {[LIT_CHARS -R]}], [{[LIT_CHARS -P]}, {[LIT_CHARS -k]}, {[LIT_CHARS -x]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS _filedir]} {[LIT_CHARS pkg]} ) (Com {[LIT_CHARS _filedir]} {[LIT_CHARS -d]} ) ) (Com {[LIT_CHARS _filedir]} ) (Com {[LIT_CHARS _filedir]} {[LIT_CHARS -d]} ) (ElseTrue) (If (DBracket {B2 BINARY_STRING_EQUAL {[VarSub cur]} {[LIT_CHARS -] [LIT_OTHER "*"]}}) (List (= scope= flags=0 words=[] bindings=[('opts', {[DQ [LIT_CHARS "-a -A -d -k -n -M -P -r -R -s -v -V -x"]]})]) (= scope= flags=0 words=[] bindings=[('COMPREPLY', {[Array {[ComSub (Com {[LIT_CHARS compgen]} {[LIT_CHARS -W]} {[DQ [VarSub opts]]} {[LIT_CHARS --]} {[VarSub cur]})]}]})]) ) (ElseTrue) (List (= scope= flags=0 words=[{[LIT_CHARS pkginst_list]}] bindings=[]) (If (DBracket {B1 UNARY_FILE_d {[VarSub device]}}) (List (For filedir [{[ComSub (Com {[LIT_CHARS /bin/ls]} {[LIT_CHARS -1]} {[VarSub device]})]}]) (If (AndOr OP_AND_IF (DBracket {B1 UNARY_FILE_d {[DQ [VarSub device][LIT_CHARS /][VarSub filedir]]}}) (DBracket {B1 UNARY_FILE_f {[DQ [VarSub device][LIT_CHARS /][VarSub filedir][LIT_CHARS /pkginfo]]}}) ) (= scope= flags=0 words=[] bindings=[('pkginst_list+', {[Array {[VarSub pkginst_list bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_HYPHEN {}]} {[DQ [VarSub filedir]]}]})]) ) ) (= scope= flags=0 words=[] bindings=[('pkginst_list', {[DQ [VarSub pkginst_list bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('pkginst_list', {[ComSub (Pipeline (Com {[LIT_CHARS strings]} {[ComSub (Com {[LIT_CHARS dequote]} {[VarSub device]})]}) (Com {[LIT_CHARS command]} {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^PKG="]]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [LIT_DBRACKET_LIKE "="]} {[LIT_CHARS -f2]}) )]})]) ) (= scope= flags=0 words=[] bindings=[('COMPREPLY', {[Array {[ComSub (Com {[LIT_CHARS compgen]} {[LIT_CHARS -W]} {[DQ [VarSub pkginst_list]]} {[LIT_CHARS --]} {[VarSub cur]})]}]})]) ) ) ) ) ) (Com {[LIT_CHARS complete]} {[LIT_CHARS -F]} {[LIT_CHARS _pkgadd]} {[LIT_CHARS pkgadd]} ) )