(AndOr OP_AND_IF (FunctionDef _sh [] (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]} ) (Com {[LIT_CHARS return]} ) ) (Case to_match={[VarSub prev]}, pat_word_list=[[{[LIT_CHARS -c]}], [{[LIT_CHARS -o]}, {[LIT_OTHER "+"] [LIT_CHARS o]}]] (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) (List (= scope= flags=0 words=[] bindings=[('COMPREPLY', {[Array {[ComSub (Com {[LIT_CHARS compgen]} {[LIT_CHARS -W]} {[SQ ]} {[LIT_CHARS --]} {[DQ [VarSub cur]]})]}]})]) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) (= scope= flags=0 words=[] bindings=[('opts', {[DQ [LIT_CHARS "-a -b -C -e -f -h -i -m -n -o -u -v -x"]]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub cur]]} {[LIT_CHARS -] [LIT_OTHER "*"]}}) (List (= scope= flags=0 words=[] bindings=[('COMPREPLY', {[Array {[ComSub (Com {[LIT_CHARS compgen]} {[LIT_CHARS -W]} {[DQ [VarSub opts][LIT_CHARS " -c -s"]]} {[LIT_CHARS --]} {[DQ [VarSub cur]]})]}]})]) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub cur]]} {[LIT_OTHER "+"] [LIT_OTHER "*"]}}) (List (= scope= flags=0 words=[] bindings=[('COMPREPLY', {[Array {[ComSub (Com {[LIT_CHARS compgen]} {[LIT_CHARS -W]} {[DQ [VarSub opts transform_ops=[PatSub {[LIT_CHARS -]} {[LIT_CHARS "+"]} do_all]]]} {[LIT_CHARS --]} {[DQ [VarSub cur]]})]}]})]) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) (= scope= flags=0 words=[{[LIT_CHARS args]}] bindings=[('ext', {[SQ ]})]) (Com {[LIT_CHARS _count_args]} ) (AndOr OP_AND_IF (DBracket {B2 BINARY_INT_EQ {[VarSub args]} {[LIT_CHARS 1]}}) (= scope= flags=0 words=[] bindings=[('ext', {[LIT_CHARS sh]})]) ) (Com {[LIT_CHARS _filedir]} {[VarSub ext]} ) ) ) (Com {[LIT_CHARS complete]} {[LIT_CHARS -F]} {[LIT_CHARS _sh]} {[LIT_CHARS sh]} ) )