(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:indent_level spids:[4]) op: Equal rhs: {(DQ (-1))} spids: [4] ) ] spids: [4] ) (command.FuncDef name: print_indent body: (command.BraceGroup children: [ (command.ForEach iter_name: NUM iter_words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(seq)} {(0)} {($ VSub_DollarName '$indent_level')})] ) left_token: <Left_Backtick '`'> spids: [23 29] ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (C {(echo)} {(-ne)} {(SQ <' '>)}) terminator: <Op_Semi ';'> ) ] spids: [32 43] ) spids: [22 30] ) ] spids: [14] ) spids: [9 13] ) (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(read)} {(line)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_DollarName '$line'))} arms: [ (case_arm pat_list: [{(SQ <'('>) (Lit_Other '*') (SQ <')'>)}] action: [(C {(print_indent)}) (C {(echo)} {(DQ ($ VSub_DollarName '$line'))})] spids: [67 75 89 16777215] ) (case_arm pat_list: [{(SQ <')'>)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:indent_level spids:[102]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithWord w: {($ VSub_DollarName '$indent_level')} ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [103 112] ) } spids: [102] ) ] spids: [102] ) (C {(print_indent)}) (C {(echo)} {(DQ ($ VSub_DollarName '$line'))}) ] spids: [92 96 125 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (SQ <')'>)}] action: [ (C {(print_indent)}) (command.Pipeline children: [ (C {(echo)} {(DQ ($ VSub_DollarName '$line'))}) (C {(sed)} {(SQ <'s/)$//'>)}) ] negated: F ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:indent_level spids:[158]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithWord w: {($ VSub_DollarName '$indent_level')} ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [159 168] ) } spids: [158] ) ] spids: [158] ) (C {(print_indent)}) (C {(echo)} {(SQ <')'>)}) ] spids: [129 134 181 16777215] ) (case_arm pat_list: [{(SQ <'('>) (Lit_Other '*')}] action: [ (C {(print_indent)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:indent_level spids:[195]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w: {($ VSub_DollarName '$indent_level')} ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [196 205] ) } spids: [195] ) ] spids: [195] ) (C {(echo)} {(DQ ($ VSub_DollarName '$line'))}) ] spids: [184 189 215 16777215] ) ] spids: [58 64 218] ) ] spids: [55 220] ) redirects: [ (redir.Redir op: <Redir_TLess '<<<'> fd: 16777215 arg_word: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(sed)} {(SQ <'s/(/\\n(/g'>)}) (C {(sed)} {(SQ <'s/)/)\\n/g'>)})] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [224 240] ) ) } ) ] ) ] )