(command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _cdrecord body: (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:<Id.ControlFlow_Return return>) ] ) (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: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name cur> 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: <Id.VSub_Name cur> 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: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} { (SQ <'help all fast track unreserve trtail\n'> <' unclose session'> ) } {<-->} {(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: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name cur> 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: <Id.VSub_Name cur> 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: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (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: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (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: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} { (SQ <'burnfree noburnfree varirec=\n'> < ' gigarec= audiomaster forcespeed noforcespeed speedread\n' > <' nospeedread singlesession nosinglesession hidecdr\n'> < ' nohidecdr tattooinfo tattoofile=' > ) } {<-->} {(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: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple words: [ {($ Id.VSub_Number '$1')} {<Id.Lit_VarLike 'driver='> <help>} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (C {<awk>} {(SQ <'NR > 1 { print $1 }'>)}) ] 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: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(SQ <'{25..95}'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [374] ) ] ) ] spids: [370 371 398 -1] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> 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: <Id.Op_LParen _> 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: <Id.Op_LParen _> 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: <Id.Op_Semi _> ) ] 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: <Id.Op_Semi _> ) ] 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: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name track_options> 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: <Id.Lit_ArithVarLike 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: <Id.VSub_Name track_options> bracket_op: (bracket_op.ArrayIndex expr: <Id.Lit_ArithVarLike i> ) ) ) } right: {(DQ ($ Id.VSub_DollarName '$prev'))} ) ) terminator: <Id.Op_Semi _> ) ] 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: <Id.ControlFlow_Break break> ) ] 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: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(SQ <'${track_options[@]}'>)} {<-->} {(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: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(SQ <'${generic_options[@]}'>)} {<-->} {(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>}) ] )