(command.CommandList children: [ (command.Assignment keyword: Assign_Declare flags: [-a] pairs: [(assign_pair lhs:(lhs_expr.LhsName name:__atexit_cmds spids:[15]) op:Equal spids:[15])] spids: [11] ) (command.FuncDef name: __atexit body: (command.BraceGroup children: [ (command.ForEach iter_name: cmd iter_words: [ { (DQ (word_part.BracedVarSub token: <VSub_Name __atexit_cmds> bracket_op: (bracket_op.WholeArray op_id:Lit_At) spids: [35 40] ) ) } ] do_arg_iter: F body: (command.DoGroup children:[(C {(eval)} {(${ VSub_Name cmd)})] spids:[44 54]) spids: [33 42] ) ] spids: [25] ) spids: [21 24] ) (command.FuncDef name: atexit body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:length spids:[75]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name __atexit_cmds> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id:Arith_Star) spids: [76 82] ) } spids: [75] ) ] spids: [73] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsIndexedName name: __atexit_cmds index: (arith_expr.ArithWord w:{(${ VSub_Name length)}) spids: [90] ) op: Equal rhs: {(DQ (${ VSub_Star '*'))} spids: [90] ) ] spids: [90] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {(${ VSub_Name length)} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(trap)} {(__atexit)} {(EXIT)})] spids: [16777215 122] ) ] spids: [16777215 132] ) ] spids: [66] ) spids: [62 65] ) ] )