(command.CommandList children: [ (command.ShFunction name: _reply_compgen_array body: (command.BraceGroup children: [ (C {(local)} {(i)} {(wlist)}) (command.ForEach iter_name: i iter_words: [ { (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:55) prefix_op: (Id.VSub_Bang) bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(local)} {(Id.Lit_VarLike 'q=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:68) command_list: (command.CommandList children: [ (C {(quote)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 72 ) command_list: (command.CommandList children: [ (C {(printf)} {(Id.Lit_Other '%') (q)} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: COMPREPLY span_id: 80 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$i')} ) ) ) ) } ) ] ) ) ) } ) ] ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wlist) op: assign_op.PlusEqual rhs: {($ Id.VSub_DollarName '$q') (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:93) tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:94)] ) } spids: [91] ) ] ) ] ) ) (C {(local)} {(Id.Lit_VarLike 'ecur=') (DQ ($ Id.VSub_DollarName '$cur'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ecur) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:ecur span_id:116) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:119) ) } replace: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:121) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:122)) } replace_mode: Id.Lit_Slash ) ) } spids: [114] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ecur) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:ecur span_id:128) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:"\\'" span_id:131) ) } replace: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:133) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:134)) } replace_mode: Id.Lit_Slash ) ) } spids: [126] ) ] ) (C {(local)} {(Id.Lit_VarLike 'oldifs=') ($ Id.VSub_DollarName '$IFS')}) (command.Simple words: [ {(eval)} { (SQ (Token id: Id.Lit_Chars val: 'COMPREPLY=(`compgen -W "$wlist" -- "${ecur}"`)' span_id: 157 ) ) } ] more_env: [ (env_pair name: IFS val: { (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:150) tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:151)] ) } spids: [149] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$oldifs')} spids: [161] ) ] ) ] ) ) (command.ShFunction name: __linux_fstab_unescape body: (command.BraceGroup children: [ (C {(eval)} {($ Id.VSub_Number '$1') (Id.Lit_Equals '=') (DQ ("'") (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:185) prefix_op: (Id.VSub_Bang) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:"\\'" span_id:188) ) } replace: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:190) ) (047) } replace_mode: Id.Lit_Slash ) ) ("'") ) } ) (C {(eval)} {($ Id.VSub_Number '$1') (Id.Lit_Equals '=') (DQ ("'") (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:205) prefix_op: (Id.VSub_Bang) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:208) ) } replace: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:210) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:211)) } replace_mode: Id.Lit_Percent ) ) ("'") ) } ) (C {(eval)} { (DQ ($ Id.VSub_Number '$1') ('=') (Id.Lit_Other '$') ("'") (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:226) prefix_op: (Id.VSub_Bang) ) ("'") ) } ) ] ) ) (command.ShFunction name: _linux_fstab body: (command.BraceGroup children: [ (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:254))} spids: [253] ) ] ) (C {(local)} {(fs_spec)} {(fs_file)} {(fs_other)}) (C {(local)} {(Id.Lit_VarLike 'oldifs=') (DQ ($ Id.VSub_DollarName '$IFS'))}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:280) cond: [ (command.Sentence child: (C {(read)} {(-r)} {(fs_spec)} {(fs_file)} {(fs_other)}) terminator: (Token id:Id.Op_Semi val:';' span_id:291) ) ] 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: {($ Id.VSub_DollarName '$fs_spec')} right: {(Id.Lit_Other '[') (Id.Lit_Pound '#') (Id.Lit_Other ']') (Id.Lit_Other '*') } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:310) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:314) ) terminator: (Token id:Id.Op_Semi val:';' span_id:315) ) ] spids: [296 312] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(Id.BoolUnary_L -L)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:331) ) ] action: [ (C {(local)} {(Id.Lit_VarLike 'fs_label=') (braced_var_sub token: (Token id:Id.VSub_Name val:fs_spec span_id:340) suffix_op: (suffix_op.PatSub pat: {('LABEL=')} replace_mode: Id.Lit_Pound ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$fs_label')} right: {(DQ ($ Id.VSub_DollarName '$fs_spec'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:360) ) ] action: [ (C {(__linux_fstab_unescape)} {(fs_label)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: { (single_quoted left: (Token id: Id.Left_SingleQuoteC val: "$'" span_id: 371 ) tokens: [ (Token id: Id.Char_OneChar val: '\\0' span_id: 372 ) ] ) } spids: [370] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.PlusEqual rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:377) words: [{(DQ ($ Id.VSub_DollarName '$fs_label'))}] ) } spids: [376] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$oldifs')} spids: [384] ) ] ) ] spids: [347 362] ) ] ) ] spids: [320 333] ) ] else_action: [ (C {(__linux_fstab_unescape)} {(fs_spec)}) (C {(__linux_fstab_unescape)} {(fs_file)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: { (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:405) tokens: [(Token id:Id.Char_OneChar val:'\\0' span_id:406)] ) } spids: [404] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$fs_spec')} right: {(Id.Lit_Other '*') (/) (Id.Lit_Other '*')} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.PlusEqual rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:425) words: [{(DQ ($ Id.VSub_DollarName '$fs_spec'))}] ) } spids: [424] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$fs_file')} right: {(Id.Lit_Other '*') (/) (Id.Lit_Other '*')} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.PlusEqual rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:447) words: [{(DQ ($ Id.VSub_DollarName '$fs_file'))}] ) } spids: [446] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$oldifs')} spids: [454] ) ] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_DollarName '$cur')}) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$cur')} right: {(/) (Id.Lit_Other '*')} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:485) ) ] action: [ (C {(local)} {(realcur)}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$cur')} right: {(Id.Lit_Other '*') (/)} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:realcur) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:514) command_list: (command.CommandList children: [ (command.Simple words: [ {(readlink)} {(-f)} {(DQ ($ Id.VSub_DollarName '$cur') (.))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:525) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) (/) ) } spids: [512] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:realcur) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:537) command_list: (command.CommandList children: [ (command.Simple words: [ {(readlink)} {(-f)} {(DQ ($ Id.VSub_DollarName '$cur'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:547) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [536] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName '$realcur')}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:561) ) ] action: [ (C {(local)} {(Id.Lit_VarLike 'dirrealcur=')} {(Id.Lit_VarLike 'dircur=')} {(basecur)} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$cur')} right: {(Id.Lit_Other '*') (/) (Id.Lit_Other '*')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:588) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirrealcur) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: realcur span_id: 596 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) (/) ) } spids: [593] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dircur) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:608) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) (/) ) } spids: [605] ) ] ) ] spids: [575 590] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:basecur) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:622) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(DQ ($ Id.VSub_DollarName '$dircur'))} ) ) } spids: [620] ) ] ) (C {(local)} {(i)} {(Id.Lit_VarLike 'n=') (braced_var_sub token: (Token id:Id.VSub_Name val:COMPREPLY span_id:637) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) (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 0)}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token: (Token id:Id.Lit_ArithVarLike val:i span_id:653) ) right: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$n')}) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: COMPREPLY span_id: 674 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 676 ) ) ) ) ) } right: {(DQ ($ Id.VSub_DollarName '$realcur')) (Id.Lit_Other '*') } ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.PlusEqual rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:694) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 696 ) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {(cd)} { (DQ ($ Id.VSub_DollarName '$dircur' ) ) } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 704 ) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(compgen)} {(-f)} {(-d)} {(-P)} { (DQ ($ Id.VSub_DollarName '$dircur' ) ) } {(-X)} { (DQ ('!') (braced_var_sub token: (Token id: Id.VSub_Name val: COMPREPLY span_id: 730 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 732 ) ) ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: { (DQ ($ Id.VSub_DollarName '$dirrealcur' ) ) } ) ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$basecur'))} ) ] ) ] ) ) } ] ) } spids: [693] ) ] ) ] ) ] ) ) ] spids: [554 563] ) ] ) ] spids: [469 487] ) ] ) (C {(_reply_compgen_array)}) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _umount body: (command.BraceGroup children: [ (C {(local)} {(cur)} {(prev)} {(words)} {(cword)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_init_completion)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:789) ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$prev'))} arms: [ (case_arm pat_list: [{(-t)}] action: [ (C {(local)} {(Id.Lit_VarLike 'split=') (false)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: {(Id.Lit_Other '?') (Id.Lit_Other '*') (Id.Lit_Other ',') (Id.Lit_Other '*') } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:832) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:840) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(',*')} ) ) ) } spids: [837] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:850) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*,')} ) ) ) } spids: [847] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:split) op: assign_op.Equal rhs: {(true)} spids: [857] ) ] ) ] spids: [816 834] ) ] ) (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:865) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 867 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'adfs affs autofs btrfs cifs coda\n' span_id: 874 ) (Token id: Id.Lit_Chars val: ' cramfs debugfs devpts efs ext2 ext3 ext4 fuse hfs hfsplus hpfs\n' span_id: 875 ) (Token id: Id.Lit_Chars val: ' iso9660 jfs minix msdos ncpfs nfs nfs4 ntfs ntfs-3g proc qnx4\n' span_id: 876 ) (Token id: Id.Lit_Chars val: ' ramfs reiserfs romfs squashfs smbfs sysv tmpfs ubifs udf ufs\n' span_id: 877 ) (Token id:Id.Lit_Chars val:' umsdos usbfs vfat xfs' span_id:878) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [864] ) ] ) (C {(_fstypes)}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$split')}) (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:900) words: [ { (braced_var_sub token: (Token id: Id.VSub_Name val: COMPREPLY span_id: 903 ) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) suffix_op: (suffix_op.PatSub pat: {} replace: {($ Id.VSub_DollarName '$prev') (',')} replace_mode: Id.Lit_Pound ) ) } ] ) } spids: [899] ) ] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:917) ) ] spids: [802 803 920 -1] ) (case_arm pat_list: [{(-O)}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:931) ) ] spids: [923 924 934 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: {(-) (Id.Lit_Other '*')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:955) ) ] 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:961) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 963 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '-V -h -v -n -r -d -i -a -t -O -f -l\n' span_id: 970 ) (Token id:Id.Lit_Chars val:' --no-canonicalize --fake' span_id:971) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [960] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName '$COMPREPLY')}) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:993) ) ] ) ] spids: [941 957] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_r child:{(/proc/mounts)}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1009) ) ] action: [ (command.Simple words: [{(_linux_fstab)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1024) fd: -1 arg_word: {(/proc/mounts)} ) ] ) ] spids: [1000 1011] ) ] else_action: [ (C {(local)} {(Id.Lit_VarLike 'IFS=') (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:1035) tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:1036)] ) } ) (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:1041) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 1043 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '$( mount | cut -d" " -f 3 )' span_id: 1050 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [1040] ) ] ) ] ) ] ) ) (C {(complete)} {(-F)} {(_umount)} {(-o)} {(dirnames)} {(umount)}) ] ) ] )