(command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _rsync body: (command.BraceGroup children: [ (C {(local)} {(cur)} {(prev)} {(words)} {(cword)} {(split)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_init_completion)} {(-s)} {(-n)} {(Id.Lit_Other ':')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:34) ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_expand)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:42) arg_word: {(0)} ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [ {(--config)} {(--password-file)} {(--include-from)} {(--exclude-from)} {(--files-from)} {(--log-file)} {(--write-batch)} {(--only-write-batch)} {(--read-batch)} ] action: [ (C {(compopt)} {(Id.Lit_Other '+') (o)} {(nospace)}) (C {(_filedir)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:88) arg_word: {(0)} ) ] spids: [55 74 93 -1] ) (case_arm pat_list: [ {(-T)} {(--temp-dir)} {(--compare-dest)} {(--backup-dir)} {(--partial-dir)} {(--copy-dest)} {(--link-dest)} ] action: [ (C {(compopt)} {(Id.Lit_Other '+') (o)} {(nospace)}) (C {(_filedir)} {(-d)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:127) arg_word: {(0)} ) ] spids: [96 111 132 -1] ) (case_arm pat_list: [{(-e)} {(--rsh)}] action: [ (C {(compopt)} {(Id.Lit_Other '+') (o)} {(nospace)}) (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:150) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:152) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ (Token id:Id.Lit_Chars val:'rsh ssh' span_id:159))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [149] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:173) arg_word: {(0)} ) ] spids: [135 138 178 -1] ) (case_arm pat_list: [{(--compress-level)}] action: [ (C {(compopt)} {(Id.Lit_Other '+') (o)} {(nospace)}) (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:194) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:196) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ (Token id:Id.Lit_Chars val:'{1..9}' span_id:203))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [193] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:217) arg_word: {(0)} ) ] spids: [181 182 222 -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:233) arg_word: {(0)} ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$cur')} arms: [ (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:252) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:254) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '--verbose --quiet --no-motd --checksum\n' span_id: 261 ) (Token id: Id.Lit_Chars val: ' --archive --recursive --relative --no-implied-dirs\n' span_id: 262 ) (Token id: Id.Lit_Chars val: ' --backup --backup-dir= --suffix= --update --inplace --append\n' span_id: 263 ) (Token id: Id.Lit_Chars val: ' --append-verify --dirs --old-dirs --links --copy-links\n' span_id: 264 ) (Token id: Id.Lit_Chars val: ' --copy-unsafe-links --safe-links --copy-dirlinks\n' span_id: 265 ) (Token id: Id.Lit_Chars val: ' --keep-dirlinks --hard-links --perms --executability --chmod=\n' span_id: 266 ) (Token id: Id.Lit_Chars val: ' --acls --xattrs --owner --group --devices --copy-devices\n' span_id: 267 ) (Token id: Id.Lit_Chars val: ' --specials --times --omit-dir-times --super --fake-super\n' span_id: 268 ) (Token id: Id.Lit_Chars val: ' --sparse --dry-run --whole-file --no-whole-file\n' span_id: 269 ) (Token id: Id.Lit_Chars val: ' --one-file-system --block-size= --rsh= --rsync-path=\n' span_id: 270 ) (Token id: Id.Lit_Chars val: ' --existing --ignore-existing --remove-source-files --delete\n' span_id: 271 ) (Token id: Id.Lit_Chars val: ' --delete-before --delete-during --delete-delay --delete-after\n' span_id: 272 ) (Token id: Id.Lit_Chars val: ' --delete-excluded --ignore-errors --force --max-delete=\n' span_id: 273 ) (Token id: Id.Lit_Chars val: ' --max-size= --min-size= --partial --partial-dir=\n' span_id: 274 ) (Token id: Id.Lit_Chars val: ' --delay-updates --prune-empty-dirs --numeric-ids --timeout=\n' span_id: 275 ) (Token id: Id.Lit_Chars val: ' --contimeout= --ignore-times --size-only --modify-window=\n' span_id: 276 ) (Token id: Id.Lit_Chars val: ' --temp-dir= --fuzzy --compare-dest= --copy-dest= --link-dest=\n' span_id: 277 ) (Token id: Id.Lit_Chars val: ' --compress --compress-level= --skip-compress= --cvs-exclude\n' span_id: 278 ) (Token id: Id.Lit_Chars val: ' --filter= --exclude= --exclude-from= --include= --include-from=\n' span_id: 279 ) (Token id: Id.Lit_Chars val: ' --files-from= --from0 --protect-args --address= --port=\n' span_id: 280 ) (Token id: Id.Lit_Chars val: ' --sockopts= --blocking-io --no-blocking-io --stats\n' span_id: 281 ) (Token id: Id.Lit_Chars val: ' --8-bit-output --human-readable --progress --itemize-changes\n' span_id: 282 ) (Token id: Id.Lit_Chars val: ' --out-format= --log-file= --log-file-format= --password-file=\n' span_id: 283 ) (Token id: Id.Lit_Chars val: ' --list-only --bwlimit= --write-batch= --only-write-batch=\n' span_id: 284 ) (Token id: Id.Lit_Chars val: ' --read-batch= --protocol= --iconv= --ipv4 --ipv6 --version\n' span_id: 285 ) (Token id:Id.Lit_Chars val:' --help --daemon --config= --no-detach' span_id:286) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [251] ) ] ) (command.AndOr ops: [Id.Op_DPipe] 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)} {(Id.Lit_Other '+') (o)} {(nospace)}) ] ) ] spids: [246 248 321 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*') (Id.Lit_Other ':') (Id.Lit_Star '*')}] action: [ (C {(local)} {(i)} {(Id.Lit_VarLike 'shell=') (ssh)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token: (Token id:Id.Lit_ArithVarLike val:i span_id:351) ) right: (arith_expr.VarRef token: (Token id:Id.Lit_ArithVarLike val:cword span_id:355) ) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) 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 (braced_var_sub token: (Token id: Id.VSub_Name val: words span_id: 374 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 376 ) ) ) ) ) } right: {(-) (word_part.ExtGlob op: (Token id:Id.ExtGlob_At val:'@(' span_id:384) arms: [{(e)} {(-rsh)}] ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:391) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shell) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:398) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 400 ) ) right: (arith_expr.ArithWord w: {(Id.Lit_Digits 1)} ) ) ) ) } spids: [396] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:407) ) ] spids: [368 393] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$shell')} right: {(ssh)} ) ) (C {(_xfunc)} {(ssh)} {(_scp_remote_files)}) ] ) ] spids: [324 327 435 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(_known_hosts_real)} {(-c)} {(-a)} {(DQ ($ Id.VSub_DollarName '$cur'))}) (C {(_xfunc)} {(ssh)} {(_scp_local_files)}) ] spids: [438 439 460 -1] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:467) arg_word: {(0)} ) ] ) ) (C {(complete)} {(-F)} {(_rsync)} {(-o)} {(nospace)} {(rsync)}) ] )