(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]
                )
              )
            }
        )
      ]
    )
  ]
)