(command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _cdrecord body: (command.BraceGroup children: [ (C {(local)} {(cur)} {(prev)} {(words)} {(cword)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_init_completion)} {(-n)} {(Id.Lit_Equals '=')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:30) ) ] ) (C {(local)} {(i)} {(generic_options)} {(track_options)} {(track_mode)}) (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.BoolBinary_GlobEqual '=') (Id.Lit_Other '*')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:65) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:72) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPercent arg_word:{('=*')}) ) } spids: [70] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:80) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{('*=')}) ) } spids: [78] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(textfile)} {(cuefile)} {(msifile)}] action: [(C {(_filedir)})] spids: [93 98 104 -1] ) (case_arm pat_list: [{(blank)}] 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:112) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 114 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'help all fast track unreserve trtail\n' span_id: 121 ) (Token id:Id.Lit_Chars val:' unclose session' span_id:122) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [111] ) ] ) ] spids: [107 108 136 -1] ) (case_arm pat_list: [{(driveropts)}] action: [ (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.BoolBinary_GlobEqual '=') (Id.Lit_Other '*') } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:156) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:163) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPercent arg_word: {('=*')} ) ) } spids: [161] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:cur span_id:171) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('*=')} ) ) } spids: [169] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(varirec)}] 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: 189 ) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 191 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ('-2 -1 0 1 2'))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [188] ) ] ) ] spids: [184 185 214 -1] ) (case_arm pat_list: [{(gigarec)}] 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: 222 ) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 224 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (DQ ( '0.6 0.7 0.8 1.0 1.2 1.3\n' ) (' 1.4') ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [221] ) ] ) ] spids: [217 218 246 -1] ) (case_arm pat_list: [{(tattoofile)}] action: [(C {(_filedir)})] spids: [249 250 256 -1] ) ] ) ] spids: [143 158] ) ] else_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:266) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 268 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'burnfree noburnfree varirec=\n' span_id: 275 ) (Token id: Id.Lit_Chars val: ' gigarec= audiomaster forcespeed noforcespeed speedread\n' span_id: 276 ) (Token id: Id.Lit_Chars val: ' nospeedread singlesession nosinglesession hidecdr\n' span_id: 277 ) (Token id:Id.Lit_Chars val:' nohidecdr tattooinfo tattoofile=' span_id:278) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [265] ) ] ) (command.AndOr ops: [Id.Op_DAmp] 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)} {(-o)} {(nospace)}) ] ) ] ) ] spids: [139 140 315 -1] ) (case_arm pat_list: [{(driver)}] 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:323) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 325 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 332 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [ {($ Id.VSub_Number '$1')} { (Id.Lit_VarLike 'driver=' ) (help) } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_GreatAnd val: '2>&' span_id: 339 ) fd: 2 arg_word: {(1)} ) ] ) (C {(awk)} { (SQ (Token id: Id.Lit_Chars val: 'NR > 1 { print $1 }' span_id: 349 ) ) } ) ] negated: F ) ] ) ) (' help') ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [322] ) ] ) ] spids: [318 319 367 -1] ) (case_arm pat_list: [{(minbuf)}] 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:375) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 377 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '{25..95}' span_id: 384 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [374] ) ] ) ] spids: [370 371 398 -1] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:404) arg_word: {(0)} ) ] spids: [50 67] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:generic_options) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:414) words: [ {(-version)} {(-v)} {(-V)} {(-d)} {(-silent)} {(-force)} {(-immed)} {(-dummy)} {(-clone)} {(-dao)} {(-sao)} {(-tao)} {(-raw)} {(-raw96r)} {(-raw96p)} {(-raw16)} {(-multi)} {(-msinfo)} {(-toc)} {(-atip)} {(-fix)} {(-nofix)} {(-waiti)} {(-load)} {(-lock)} {(-eject)} {(-format)} {(-setdropts)} {(-checkdrive)} {(-prcap)} {(-inq)} {(-scanbus)} {(--devices)} {(-reset)} {(-abort)} {(-overburn)} {(-ignsize)} {(-useinfo)} {(-packet)} {(-noclose)} {(-text)} {(Id.Lit_VarLike 'debug=')} {(Id.Lit_VarLike 'kdebug=')} {(Id.Lit_VarLike 'minbuf=')} {(Id.Lit_VarLike 'msifile=')} {(Id.Lit_VarLike 'speed=')} {(Id.Lit_VarLike 'blank=')} {(Id.Lit_VarLike 'fs=')} {(Id.Lit_VarLike 'ts=')} {(Id.Lit_VarLike 'dev=')} {(Id.Lit_VarLike 'gracetime=')} {(Id.Lit_VarLike 'timeout=')} {(Id.Lit_VarLike 'driver=')} {(Id.Lit_VarLike 'driveropts=')} {(Id.Lit_VarLike 'defpregap=')} {(Id.Lit_VarLike 'pktsize=')} {(Id.Lit_VarLike 'mcn=')} {(Id.Lit_VarLike 'textfile=')} {(Id.Lit_VarLike 'cuefile=')} ] ) } spids: [413] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:track_options) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:550) words: [ {(-audio)} {(-swab)} {(-data)} {(-mode2)} {(-xa)} {(-xa1)} {(-xa2)} {(-xamix)} {(-cdi)} {(-isosize)} {(-pad)} {(-nopad)} {(-shorttrack)} {(-noshorttrack)} {(-preemp)} {(-nopreemp)} {(-copy)} {(-nocopy)} {(-scms)} {(Id.Lit_VarLike 'isrc=')} {(Id.Lit_VarLike 'index=')} {(Id.Lit_VarLike 'padsize=')} {(Id.Lit_VarLike 'pregap=')} {(Id.Lit_VarLike 'tsize=')} ] ) } spids: [549] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:track_mode) op: assign_op.Equal rhs: {(0)} spids: [611] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_gt left: {($ Id.VSub_DollarName '$cword')} right: {(1)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:626) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName '$prev')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:640) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:track_mode) op: assign_op.Equal rhs: {(1)} spids: [645] ) ] ) ] spids: [631 642] ) ] else_action: [ (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:661) ) right: (arith_expr.ArithWord w: { (braced_var_sub token: (Token id:Id.VSub_Name val:track_options span_id:667) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) ) 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: track_options span_id: 690 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 692 ) ) ) ) ) } right: {(DQ ($ Id.VSub_DollarName '$prev'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:704) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:track_mode) op: assign_op.Equal rhs: {(1)} spids: [709] ) ] ) (command.ControlFlow token: (Token id: Id.ControlFlow_Break val: break span_id: 713 ) ) ] spids: [684 706] ) ] ) ] ) ) ] ) ] spids: [615 628] ) ] ) (C {(_filedir)}) (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:741) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:743) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '${track_options[@]}' span_id: 750 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [740] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$track_mode')} right: {(0)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:779) ) ] action: [ (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:785) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:787) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: '${generic_options[@]}' span_id: 794 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [784] ) ] ) ] spids: [768 781] ) ] ) (command.AndOr ops: [Id.Op_DAmp] 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)} {(-o)} {(nospace)}) ] ) ] ) ) (C {(complete)} {(-F)} {(_cdrecord)} {(cdrecord)} {(wodim)}) ] )