(CommandList
  children: [
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(source)} {(DQ (${ VSub_Name PORTAGE_BIN_PATH) (/eapi.sh))})
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (C {(shopt)} {(-s)} {(expand_aliases)})
    (C {(alias)} {(Lit_VarLike 'save_IFS=') (SQ <'[ "${IFS:-unset}" != "unset" ] && old_IFS="${IFS}"'>)})
    (C {(alias)} 
      {(Lit_VarLike 'restore_IFS=') 
        (SQ 
          <
'if [ "${old_IFS:-unset}" != "unset" ]; then IFS="${old_IFS}"; unset old_IFS; else unset IFS; fi'
          >
        )
      }
    )
    (FuncDef
      name: assert
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:x) op:Equal spids:[62])
                (assign_pair
                  lhs: (LhsName name:pipestatus)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name PIPESTATUS>
                        bracket_op: (WholeArray op_id:Arith_Star)
                        spids: [65 70]
                      )
                    }
                  spids: [64]
                )
              ]
              spids: [60]
            )
            (ForEach
              iter_name: x
              iter_words: [{($ VSub_Name '$pipestatus')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (DBracket
                          expr: (BoolBinary op_id:BoolBinary_eq left:{($ VSub_Name '$x')} right:{(0)})
                        )
                        (C {(die)} {(DQ ($ VSub_At '$@'))})
                      ]
                    )
                  ]
                  spids: [83 105]
                )
              spids: [78 81]
            )
          ]
          spids: [57]
        )
      spids: [53 56]
    )
    (FuncDef
      name: __assert_sigpipe_ok
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:x) op:Equal spids:[176])
                (assign_pair
                  lhs: (LhsName name:pipestatus)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name PIPESTATUS>
                        bracket_op: (WholeArray op_id:Arith_Star)
                        spids: [179 184]
                      )
                    }
                  spids: [178]
                )
              ]
              spids: [174]
            )
            (ForEach
              iter_name: x
              iter_words: [{($ VSub_Name '$pipestatus')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (DBracket
                              expr: 
                                (LogicalAnd
                                  left: 
                                    (BoolBinary
                                      op_id: BoolBinary_ne
                                      left: {($ VSub_Name '$x')}
                                      right: {(0)}
                                    )
                                  right: 
                                    (BoolBinary
                                      op_id: BoolBinary_ne
                                      left: {($ VSub_Name '$x')}
                                      right: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name PORTAGE_SIGPIPE_STATUS>
                                            suffix_op: 
                                              (StringUnary
                                                op_id: VTest_ColonHyphen
                                                arg_word: {(141)}
                                              )
                                            spids: [220 224]
                                          )
                                        }
                                    )
                                )
                            )
                          ]
                          action: [
                            (C {(__helpers_die)} {(DQ ($ VSub_At '$@'))})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 229]
                        )
                      ]
                      spids: [16777215 244]
                    )
                  ]
                  spids: [197 247]
                )
              spids: [192 195]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolBinary op_id:BoolBinary_ne left:{($ VSub_Name '$x')} right:{(0)})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__helpers_die)} {(DQ ($ VSub_At '$@'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 268]
                )
              ]
              spids: [16777215 283]
            )
          ]
          spids: [114]
        )
      spids: [110 113]
    )
    (C {(shopt)} {(-s)} {(extdebug)})
    (FuncDef
      name: __dump_trace
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:funcname)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [313]
                )
                (assign_pair
                  lhs: (LhsName name:sourcefile)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [317]
                )
                (assign_pair
                  lhs: (LhsName name:lineno)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [321]
                )
                (assign_pair
                  lhs: (LhsName name:s)
                  op: Equal
                  rhs: {(DQ (yes))}
                  spids: [325]
                )
                (assign_pair lhs:(LhsName name:n) op:Equal spids:[330])
                (assign_pair lhs:(LhsName name:p) op:Equal spids:[332])
              ]
              spids: [311]
            )
            (Assignment
              keyword: Assign_Declare
              flags: [-i]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:strip)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)})
                        spids: [340 344]
                      )
                    }
                  spids: [339]
                )
              ]
              spids: [335]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:filespacing)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [349]
                )
                (assign_pair
                  lhs: (LhsName name:linespacing)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [352]
                )
              ]
              spids: [347]
            )
            (DParen
              child: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:n)
                  right: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name FUNCNAME>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [375 381]
                              )
                            }
                        )
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                )
            )
            (DParen
              child: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:p)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name BASH_ARGV>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [397 403]
                          )
                        }
                    )
                )
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (DParen
                      child: 
                        (ArithBinary
                          op_id: Arith_Great
                          left: (ArithVarRef name:n)
                          right: (ArithWord w:{(Lit_Digits 0)})
                        )
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name FUNCNAME>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)}))
                                spids: [430 437]
                              )
                            )
                          } {(Lit_Other '=') (Lit_Other '=')} {(DQ (__qa_call))} {(Lit_Other ']')}
                        )
                        (ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_MinusEqual
                          left: (LhsName name:p)
                          right: 
                            (ArithWord
                              w: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name BASH_ARGC>
                                    bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)}))
                                    spids: [460 467]
                                  )
                                }
                            )
                        )
                    )
                    (DParen
                      child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n))
                    )
                  ]
                  spids: [424 482]
                )
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithVarRef name:n)
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:n)
                          right: 
                            (ArithBinary
                              op_id: Arith_Minus
                              left: 
                                (ArithWord
                                  w: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name FUNCNAME>
                                        prefix_op: VSub_Pound
                                        bracket_op: (WholeArray op_id:Lit_At)
                                        spids: [509 515]
                                      )
                                    }
                                )
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                        )
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:p)
                          right: 
                            (ArithWord
                              w: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name BASH_ARGV>
                                    prefix_op: VSub_Pound
                                    bracket_op: (WholeArray op_id:Lit_At)
                                    spids: [531 537]
                                  )
                                }
                            )
                        )
                    )
                  ]
                  spids: [16777215 500]
                )
              ]
              spids: [16777215 543]
            )
            (C {(eerror)} {(DQ ('Call stack:'))})
            (While
              cond: [
                (Sentence
                  child: 
                    (DParen
                      child: 
                        (ArithBinary
                          op_id: Arith_Great
                          left: (ArithVarRef name:n)
                          right: (ArithWord w:{(${ VSub_Name strip)})
                        )
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:funcname)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name FUNCNAME>
                                bracket_op: 
                                  (ArrayIndex
                                    expr: 
                                      (ArithBinary
                                        op_id: Arith_Minus
                                        left: (ArithWord w:{(${ VSub_Name n)})
                                        right: (ArithWord w:{(Lit_Digits 1)})
                                      )
                                  )
                                spids: [575 586]
                              )
                            }
                          spids: [574]
                        )
                      ]
                      spids: [574]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:sourcefile)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(basename)} 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name BASH_SOURCE>
                                              bracket_op: 
                                                (ArrayIndex
                                                  expr: (ArithWord w:{(${ VSub_Name n)})
                                                )
                                              spids: [594 601]
                                            )
                                          )
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [590 603]
                              )
                            }
                          spids: [589]
                        )
                      ]
                      spids: [589]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:lineno)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name BASH_LINENO>
                                bracket_op: 
                                  (ArrayIndex
                                    expr: 
                                      (ArithBinary
                                        op_id: Arith_Minus
                                        left: (ArithWord w:{(${ VSub_Name n)})
                                        right: (ArithWord w:{(Lit_Digits 1)})
                                      )
                                  )
                                spids: [607 618]
                              )
                            }
                          spids: [606]
                        )
                      ]
                      spids: [606]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:args)
                          op: Equal
                          rhs: {(EmptyPart)}
                          spids: [625]
                        )
                      ]
                      spids: [625]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name BASH_ARGV>
                                              bracket_op: (WholeArray op_id:Lit_At)
                                              spids: [635 640]
                                            )
                                          )
                                        }
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (ForExpr
                              init: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:j)
                                  right: (ArithWord w:{(Lit_Digits 1)})
                                )
                              cond: 
                                (ArithBinary
                                  op_id: Arith_LessEqual
                                  left: (ArithVarRef name:j)
                                  right: 
                                    (ArithWord
                                      w: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name BASH_ARGC>
                                            bracket_op: 
                                              (ArrayIndex
                                                expr: 
                                                  (ArithBinary
                                                    op_id: Arith_Minus
                                                    left: (ArithWord w:{(${ VSub_Name n)})
                                                    right: (ArithWord w:{(Lit_Digits 1)})
                                                  )
                                              )
                                            spids: [665 676]
                                          )
                                        }
                                    )
                                )
                              update: (UnaryAssign op_id:Arith_DPlus child:(LhsName name:j))
                              body: 
                                (DoGroup
                                  children: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:newarg)
                                          op: Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                token: <VSub_Name BASH_ARGV>
                                                bracket_op: 
                                                  (ArrayIndex
                                                    expr: 
                                                      (ArithWord
                                                        w: 
                                                          {
                                                            (ArithSubPart
                                                              anode: 
                                                                (ArithBinary
                                                                  op_id: Arith_Minus
                                                                  left: 
                                                                    (ArithBinary
                                                                      op_id: Arith_Minus
                                                                      left: (ArithVarRef name:p)
                                                                      right: (ArithVarRef name:j)
                                                                    )
                                                                  right: (ArithWord w:{(Lit_Digits 1)})
                                                                )
                                                              spids: [694 707]
                                                            )
                                                          }
                                                      )
                                                  )
                                                spids: [691 709]
                                              )
                                            }
                                          spids: [690]
                                        )
                                      ]
                                      spids: [690]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:args)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  token: <VSub_Name args>
                                                  suffix_op: 
                                                    (StringUnary
                                                      op_id: VTest_ColonPlus
                                                      arg_word: {(${ VSub_Name args) (' ')}
                                                    )
                                                  spids: [714 721]
                                                ) ("'") (${ VSub_Name newarg) ("'")
                                              )
                                            }
                                          spids: [712]
                                        )
                                      ]
                                      spids: [712]
                                    )
                                  ]
                                  spids: [687 730]
                                )
                            )
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_MinusEqual
                                  left: (LhsName name:p)
                                  right: 
                                    (ArithWord
                                      w: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name BASH_ARGC>
                                            bracket_op: 
                                              (ArrayIndex
                                                expr: 
                                                  (ArithBinary
                                                    op_id: Arith_Minus
                                                    left: (ArithWord w:{(${ VSub_Name n)})
                                                    right: (ArithWord w:{(Lit_Digits 1)})
                                                  )
                                              )
                                            spids: [739 750]
                                          )
                                        }
                                    )
                                )
                            )
                          ]
                          spids: [16777215 646]
                        )
                      ]
                      spids: [16777215 756]
                    )
                    (C {(eerror)} 
                      {
                        (DQ ('  ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(printf)} {(DQ ('%') (${ VSub_Name filespacing) (s))} 
                                    {(DQ (${ VSub_Name sourcefile))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [763 779]
                          ) (', line ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(printf)} {(DQ ('%') (${ VSub_Name linespacing) (s))} 
                                    {(DQ (${ VSub_Name lineno))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [781 797]
                          ) (':  Called ') (${ VSub_Name funcname) 
                          (BracedVarSub
                            token: <VSub_Name args>
                            suffix_op: 
                              (StringUnary
                                op_id: VTest_ColonPlus
                                arg_word: {(' ') (${ VSub_Name args)}
                              )
                            spids: [802 809]
                          )
                        )
                      }
                    )
                    (DParen
                      child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n))
                    )
                  ]
                  spids: [571 822]
                )
            )
          ]
          spids: [308]
        )
      spids: [304 307]
    )
    (FuncDef
      name: nonfatal
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_nonfatal)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(die)} {(DQ ($ VSub_Name '$FUNCNAME') ('() not supported in this EAPI'))})
                  ]
                  spids: [16777215 841]
                )
              ]
              spids: [16777215 852]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolBinary op_id:BoolBinary_lt left:{($ VSub_Pound '$#')} right:{(1)})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(die)} {(DQ ($ VSub_Name '$FUNCNAME') ('(): Missing argument'))})]
                  spids: [16777215 868]
                )
              ]
              spids: [16777215 879]
            )
            (SimpleCommand
              words: [{(DQ ($ VSub_At '$@'))}]
              more_env: [(env_pair name:PORTAGE_NONFATAL val:{(1)} spids:[883])]
            )
          ]
          spids: [831]
        )
      spids: [827 830]
    )
    (FuncDef
      name: __bashpid
      body: (BraceGroup children:[(C {(sh)} {(-c)} {(SQ <'echo ${PPID}'>)})] spids:[897])
      spids: [893 896]
    )
    (FuncDef
      name: __helpers_die
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(___eapi_helpers_can_die)})
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobNEqual
                                  left: {(${ VSub_Name PORTAGE_NONFATAL)}
                                  right: {(1)}
                                )
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(die)} {(DQ ($ VSub_At '$@'))})]
                  spids: [16777215 949]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [{(echo)} {(-e)} {(DQ ($ VSub_At '$@'))}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[970])]
                )
              ]
              spids: [959 974]
            )
          ]
          spids: [927]
        )
      spids: [923 926]
    )
    (FuncDef
      name: die
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name _PORTAGE_ORIG_PATH)})
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:PATH)
                      op: Equal
                      rhs: {(${ VSub_Name _PORTAGE_ORIG_PATH)}
                      spids: [1006]
                    )
                  ]
                  spids: [1006]
                )
              ]
            )
            (C {(set)} {(Lit_Other '+') (x)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IFS)
                  op: Equal
                  rhs: 
                    {
                      (SingleQuotedPart
                        left: <Left_DollarSingleQuote "$'">
                        tokens: [<Char_Literals ' '> <Char_OneChar '\\t'> <Char_OneChar '\\n'>]
                      )
                    }
                  spids: [1024]
                )
              ]
              spids: [1022]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(___eapi_die_can_respect_nonfatal)})
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {($ VSub_Number '$1')}
                                  right: {(BoolUnary_n -n)}
                                )
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(shift)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(${ VSub_Name PORTAGE_NONFATAL)}
                                      right: {(1)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_gt
                                      left: {($ VSub_Pound '$#')}
                                      right: {(0)}
                                    )
                                )
                                (C {(eerror)} {(DQ ($ VSub_Star '$*'))})
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 1071]
                        )
                      ]
                      spids: [16777215 1098]
                    )
                  ]
                  spids: [16777215 1050]
                )
              ]
              spids: [16777215 1101]
            )
            (C {(set)} {(Lit_Other '+') (e)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name QA_INTERCEPTORS))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(unset)} {(-f)} {(${ VSub_Name QA_INTERCEPTORS)})
                    (C {(unset)} {(QA_INTERCEPTORS)})
                  ]
                  spids: [16777215 1127]
                )
              ]
              spids: [16777215 1152]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:n) op:Equal spids:[1157])
                (assign_pair
                  lhs: (LhsName name:filespacing)
                  op: Equal
                  rhs: {(0)}
                  spids: [1159]
                )
                (assign_pair
                  lhs: (LhsName name:linespacing)
                  op: Equal
                  rhs: {(0)}
                  spids: [1162]
                )
              ]
              spids: [1155]
            )
            (DParen
              child: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:n)
                  right: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name FUNCNAME>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [1176 1182]
                              )
                            }
                        )
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                )
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (DParen
                      child: 
                        (ArithBinary
                          op_id: Arith_Great
                          left: (ArithVarRef name:n)
                          right: (ArithWord w:{(Lit_Digits 0)})
                        )
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name FUNCNAME>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)}))
                                spids: [1213 1220]
                              )
                            )
                          } {(Lit_Other '=') (Lit_Other '=')} {(DQ (__qa_call))} {(Lit_Other ']')}
                        )
                        (ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (DParen
                      child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n))
                    )
                  ]
                  spids: [1207 1246]
                )
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_DEqual
                      left: (ArithVarRef name:n)
                      right: (ArithWord w:{(Lit_Digits 0)})
                    )
                )
                (DParen
                  child: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:n)
                      right: 
                        (ArithBinary
                          op_id: Arith_Minus
                          left: 
                            (ArithWord
                              w: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name FUNCNAME>
                                    prefix_op: VSub_Pound
                                    bracket_op: (WholeArray op_id:Lit_At)
                                    spids: [1268 1274]
                                  )
                                }
                            )
                          right: (ArithWord w:{(Lit_Digits 1)})
                        )
                    )
                )
              ]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (DParen
                      child: 
                        (ArithBinary
                          op_id: Arith_Great
                          left: (ArithVarRef name:n)
                          right: (ArithWord w:{(Lit_Digits 0)})
                        )
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:sourcefile)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name BASH_SOURCE>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)}))
                                spids: [1302 1309]
                              )
                            }
                          spids: [1301]
                        )
                        (assign_pair
                          lhs: (LhsName name:sourcefile)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name sourcefile>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_DPound
                                    arg_word: {('*') (Lit_Slash /)}
                                  )
                                spids: [1312 1317]
                              )
                            }
                          spids: [1311]
                        )
                      ]
                      spids: [1301]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:lineno)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name BASH_LINENO>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)}))
                                spids: [1321 1328]
                              )
                            }
                          spids: [1320]
                        )
                      ]
                      spids: [1320]
                    )
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_Less
                              left: (ArithVarRef name:filespacing)
                              right: 
                                (ArithWord
                                  w: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name sourcefile>
                                        prefix_op: VSub_Pound
                                        spids: [1336 1339]
                                      )
                                    }
                                )
                            )
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:filespacing)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name sourcefile>
                                    prefix_op: VSub_Pound
                                    spids: [1346 1349]
                                  )
                                }
                              spids: [1345]
                            )
                          ]
                          spids: [1345]
                        )
                      ]
                    )
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_Less
                              left: (ArithVarRef name:linespacing)
                              right: 
                                (ArithWord
                                  w: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name lineno>
                                        prefix_op: VSub_Pound
                                        spids: [1357 1360]
                                      )
                                    }
                                )
                            )
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:linespacing)
                              op: Equal
                              rhs: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name lineno>
                                    prefix_op: VSub_Pound
                                    spids: [1367 1370]
                                  )
                                }
                              spids: [1366]
                            )
                          ]
                          spids: [1366]
                        )
                      ]
                    )
                    (DParen
                      child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n))
                    )
                  ]
                  spids: [1298 1382]
                )
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:phase_str)
                  op: Equal
                  rhs: {(EmptyPart)}
                  spids: [1396]
                )
              ]
              spids: [1394]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$EBUILD_PHASE')})
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:phase_str)
                      op: Equal
                      rhs: {(DQ (' (') ($ VSub_Name '$EBUILD_PHASE') (' phase)'))}
                      spids: [1409]
                    )
                  ]
                  spids: [1409]
                )
              ]
            )
            (C {(eerror)} 
              {
                (DQ ('ERROR: ') (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF) ('::') 
                  (${ VSub_Name PORTAGE_REPO_NAME) (' failed') (${ VSub_Name phase_str) (':')
                )
              }
            )
            (C {(eerror)} 
              {
                (DQ ('  ') 
                  (BracedVarSub
                    token: <VSub_Star '*'>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{('(no error message)')})
                    spids: [1444 1448]
                  )
                )
              }
            )
            (C {(eerror)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:main_index) op:Equal spids:[1461])]
              spids: [1459]
            )
            (DParen
              child: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:main_index)
                  right: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name BASH_SOURCE>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [1470 1476]
                              )
                            }
                        )
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                )
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(has)} 
                          {
                            (BracedVarSub
                              token: <VSub_Name BASH_SOURCE>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$main_index')}))
                              suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)})
                              spids: [1490 1498]
                            )
                          } {(ebuild.sh)} {(misc-functions.sh)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__dump_trace)} {(2)} {(${ VSub_Name filespacing)} {(${ VSub_Name linespacing)})
                    (C {(eerror)} 
                      {
                        (DQ ('  ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(printf)} {(DQ ('%') (${ VSub_Name filespacing) (s))} 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name BASH_SOURCE>
                                          bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VOp1_DPound
                                              arg_word: {('*') (Lit_Slash /)}
                                            )
                                          spids: [1538 1546]
                                        )
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1526 1548]
                          ) (', line ') 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(printf)} {(DQ ('%') (${ VSub_Name linespacing) (s))} 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name BASH_LINENO>
                                          bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                                          spids: [1562 1567]
                                        )
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1550 1569]
                          ) (':  Called die')
                        )
                      }
                    )
                    (C {(eerror)} {(DQ ('The specific snippet of code:'))})
                    (Pipeline
                      children: [
                        (C {(sed)} {(-n)} {(-e)} 
                          {
                            (DQ ('# When we get to the line that failed, append it to the\n') 
                              ('\t\t    # hold space, move the hold space to the pattern space,\n') ('\t\t    # then print out the pattern space and quit immediately\n') ('\t\t    ') 
                              (BracedVarSub
                                token: <VSub_Name BASH_LINENO>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                                spids: [1618 1623]
                              ) ('{H;g;p;q}')
                            )
                          } {(-e)} 
                          {
                            (SQ <'# If this line ends with a line continuation, append it\n'> 
                              <'\t\t    # to the hold space\n'> <'\t\t    /\\\\$/H'>
                            )
                          } {(-e)} 
                          {
                            (SQ <'# If this line does not end with a line continuation,\n'> 
                              <'\t\t    # erase the line and set the hold buffer to it (thus\n'> <'\t\t    # erasing the hold buffer in the process)\n'> <'\t\t    /[^\\]$/{s:^.*$::;h}'>
                            )
                          } 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name BASH_SOURCE>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                                spids: [1651 1656]
                              )
                            )
                          }
                        )
                        (C {(sed)} {(-e)} {(SQ <1d>)} {(-e)} {(SQ <'s:^:RETAIN-LEADING-SPACE:'>)})
                        (While
                          cond: [(Sentence child:(C {(read)} {(-r)} {(n)}) terminator:<Op_Semi ';'>)]
                          body: 
                            (DoGroup
                              children: [
                                (Sentence
                                  child: 
                                    (C {(eerror)} 
                                      {
                                        (DQ ('  ') 
                                          (BracedVarSub
                                            token: <VSub_Name n>
                                            suffix_op: 
                                              (StringUnary
                                                op_id: VOp1_Pound
                                                arg_word: {(RETAIN-LEADING-SPACE)}
                                              )
                                            spids: [1697 1701]
                                          )
                                        )
                                      }
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              spids: [1691 1706]
                            )
                        )
                      ]
                      negated: F
                    )
                    (C {(eerror)})
                  ]
                  spids: [16777215 1506]
                )
              ]
              spids: [16777215 1712]
            )
            (C {(eerror)} 
              {
                (DQ ('If you need support, post the output of ') 
                  (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ("emerge --info '=") (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF) ('::') (${ VSub_Name PORTAGE_REPO_NAME) 
                  ("'") (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (',')
                )
              }
            )
            (C {(eerror)} 
              {
                (DQ ('the complete build log and the output of ') 
                  (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ("emerge -pqv '=") (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF) ('::') (${ VSub_Name PORTAGE_REPO_NAME) 
                  ("'") (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (.)
                )
              }
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(has)} 
                              {
                                (BracedVarSub
                                  token: <VSub_Name BASH_SOURCE>
                                  bracket_op: 
                                    (ArrayIndex
                                      expr: (ArithWord w:{($ VSub_Name '$main_index')})
                                    )
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VOp1_DPound
                                      arg_word: {('*') (Lit_Slash /)}
                                    )
                                  spids: [1782 1790]
                                )
                              } {(ebuild.sh)} {(misc-functions.sh)}
                            )
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobNEqual
                                  left: {(${ VSub_Name EBUILD_PHASE)}
                                  right: {(depend)}
                                )
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[1819])]
                      spids: [1817]
                    )
                    (ForEach
                      iter_name: x
                      iter_words: [{($ VSub_Name '$EBUILD_DEATH_HOOKS')}]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (SimpleCommand
                              words: [{(${ VSub_Name x)} {(DQ ($ VSub_At '$@'))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 16777215
                                  arg_word: {(2)}
                                  spids: [1842]
                                )
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 1
                                  arg_word: {(2)}
                                  spids: [1845]
                                )
                              ]
                            )
                          ]
                          spids: [1831 1849]
                        )
                      spids: [1827 1829]
                    )
                    (SimpleCommand
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(DQ ($ VSub_Name '$PORTAGE_BUILDDIR') (/.die_hooks))}
                          spids: [1852]
                        )
                      ]
                    )
                  ]
                  spids: [16777215 1814]
                )
              ]
              spids: [16777215 1860]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name PORTAGE_LOG_FILE)})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eerror)} 
                      {
                        (DQ ("The complete build log is located at '") (${ VSub_Name PORTAGE_LOG_FILE) 
                          ("'.")
                        )
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (DBracket
                                      expr: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobNEqual
                                          left: {(${ VSub_Name PORTAGE_LOG_FILE)}
                                          right: {(${ VSub_Name T) (/) (Lit_Other '*')}
                                        )
                                    )
                                    (Pipeline
                                      children: [(C {(has)} {(fail-clean)} {(${ VSub_Name FEATURES)})]
                                      negated: T
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:log_ext)
                                  op: Equal
                                  rhs: {(log)}
                                  spids: [1935]
                                )
                              ]
                              spids: [1933]
                            )
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobNEqual
                                      left: {(${ VSub_Name PORTAGE_LOG_FILE)}
                                      right: {(Lit_Other '*') (.log)}
                                    )
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:log_ext)
                                      op: PlusEqual
                                      rhs: 
                                        {(.) 
                                          (BracedVarSub
                                            token: <VSub_Name PORTAGE_LOG_FILE>
                                            suffix_op: 
                                              (StringUnary
                                                op_id: VOp1_DPound
                                                arg_word: {('*.')}
                                              )
                                            spids: [1956 1960]
                                          )
                                        }
                                      spids: [1954]
                                    )
                                  ]
                                  spids: [1954]
                                )
                              ]
                            )
                            (C {(eerror)} 
                              {
                                (DQ ("For convenience, a symlink to the build log is located at '") 
                                  (${ VSub_Name T) (/build.) (${ VSub_Name log_ext) ("'.")
                                )
                              }
                            )
                          ]
                          spids: [16777215 1926]
                        )
                      ]
                      spids: [16777215 1978]
                    )
                  ]
                  spids: [16777215 1878]
                )
              ]
              spids: [16777215 1981]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} {(DQ (${ VSub_Name T) (/environment))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eerror)} 
                      {
                        (DQ ("The ebuild environment file is located at '") (${ VSub_Name T) 
                          ("/environment'.")
                        )
                      }
                    )
                  ]
                  spids: [16777215 2001]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name T))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (BraceGroup
                      children: [(C {(set)}) (C {(export)})]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(DQ (${ VSub_Name T) (/die.env))}
                          spids: [2045]
                        )
                      ]
                      spids: [2034]
                    )
                    (C {(eerror)} 
                      {
                        (DQ ("The ebuild environment file is located at '") (${ VSub_Name T) 
                          ("/die.env'.")
                        )
                      }
                    )
                  ]
                  spids: [2015 2031]
                )
              ]
              spids: [16777215 2066]
            )
            (C {(eerror)} 
              {
                (DQ ("Working directory: '") 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(pwd)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [2073 2075]
                  ) ("'")
                )
              }
            )
            (C {(eerror)} {(DQ ("S: '") (${ VSub_Name S) ("'"))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$PORTAGE_EBUILD_EXIT_FILE')})
                )
                (SimpleCommand
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_Name '$PORTAGE_EBUILD_EXIT_FILE'))}
                      spids: [2102]
                    )
                  ]
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$PORTAGE_IPC_DAEMON')})
                )
                (C {(DQ ($ VSub_Name '$PORTAGE_BIN_PATH')) (/ebuild-ipc)} {(ControlFlow_Exit exit)} 
                  {(1)}
                )
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: 
                        {
                          (BracedVarSub
                            token: <VSub_Name BASHPID>
                            suffix_op: 
                              (StringUnary
                                op_id: VTest_ColonHyphen
                                arg_word: 
                                  {
                                    (CommandSubPart
                                      command_list: (CommandList children:[(C {(__bashpid)})])
                                      left_token: <Left_CommandSub '$('>
                                      spids: [2139 2141]
                                    )
                                  }
                              )
                            spids: [2136 2142]
                          )
                        }
                      right: {(${ VSub_Name EBUILD_MASTER_PID)}
                    )
                )
                (C {(kill)} {(-s)} {(SIGTERM)} {(${ VSub_Name EBUILD_MASTER_PID)})
              ]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [983]
        )
      spids: [979 982]
    )
    (FuncDef
      name: __quiet_mode
      body: 
        (BraceGroup
          children: [
            (DBracket
              expr: (BoolBinary op_id:BoolBinary_eq left:{(${ VSub_Name PORTAGE_QUIET)} right:{(1)})
            )
          ]
          spids: [2176]
        )
      spids: [2172 2175]
    )
    (FuncDef
      name: __vecho
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(__quiet_mode)}) (C {(echo)} {(DQ ($ VSub_At '$@'))})]
            )
          ]
          spids: [2198]
        )
      spids: [2194 2197]
    )
    (FuncDef
      name: __elog_base
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:messagetype) op:Equal spids:[2226])]
              spids: [2224]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Number 1))} {(-o)} {(-z)} {(DQ (${ VSub_Name T))} 
                  {(-o)} {(KW_Bang '!')} {(-d)} {(DQ (${ VSub_Name T) (/logging))} {(Lit_Other ']')}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (Case
              to_match: {(DQ (${ VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{(INFO)} {(WARN)} {(ERROR)} {(LOG)} {(QA)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:messagetype)
                          op: Equal
                          rhs: {(DQ (${ VSub_Number 1))}
                          spids: [2294]
                        )
                      ]
                      spids: [2294]
                    )
                    (C {(shift)})
                  ]
                  spids: [2282 2291 2305 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(__vecho)} {(-e)} 
                      {
                        (DQ (' ') (${ VSub_Name BAD) ('*') (${ VSub_Name NORMAL) 
                          (
' Invalid use of internal function __elog_base(), next message will not be logged'
                          )
                        )
                      }
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [2308 2309 2334 16777215]
                )
              ]
              spids: [2271 2279 2337]
            )
            (Pipeline
              children: [
                (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))})
                (While
                  cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (SimpleCommand
                          words: [
                            {(echo)}
                            {(DQ ($ VSub_Name '$messagetype') (' ') ($ VSub_Name '$REPLY'))}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_DGreat
                              fd: 16777215
                              arg_word: 
                                {
                                  (DQ (${ VSub_Name T) (/logging/) 
                                    (BracedVarSub
                                      token: <VSub_Name EBUILD_PHASE>
                                      suffix_op: 
                                        (StringUnary
                                          op_id: VTest_ColonHyphen
                                          arg_word: {(other)}
                                        )
                                      spids: [2378 2382]
                                    )
                                  )
                                }
                              spids: [2369]
                            )
                          ]
                        )
                      ]
                      spids: [2358 2386]
                    )
                )
              ]
              negated: F
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2221]
        )
      spids: [2217 2220]
    )
    (FuncDef
      name: eqawarn
      body: 
        (BraceGroup
          children: [
            (C {(__elog_base)} {(QA)} {(DQ ($ VSub_Star '$*'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_GlobNEqual
                          left: {(${ VSub_Name RC_ENDCOL)}
                          right: {(DQ (yes))}
                        )
                      right: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(${ VSub_Name LAST_E_CMD)}
                          right: {(DQ (ebegin))}
                        )
                    )
                )
                (C {(echo)})
              ]
            )
            (Pipeline
              children: [
                (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))})
                (While
                  cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (SimpleCommand
                          words: [
                            {(__vecho)}
                            {
                              (DQ (' ') ($ VSub_Name '$WARN') ('*') ($ VSub_Name '$NORMAL') (' ') 
                                ($ VSub_Name '$REPLY')
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 16777215
                              arg_word: {(2)}
                              spids: [2475]
                            )
                          ]
                        )
                      ]
                      spids: [2461 2479]
                    )
                )
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_CMD)
                  op: Equal
                  rhs: {(DQ (eqawarn))}
                  spids: [2482]
                )
              ]
              spids: [2482]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2400]
        )
      spids: [2396 2399]
    )
    (FuncDef
      name: elog
      body: 
        (BraceGroup
          children: [
            (C {(__elog_base)} {(LOG)} {(DQ ($ VSub_Star '$*'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_GlobNEqual
                          left: {(${ VSub_Name RC_ENDCOL)}
                          right: {(DQ (yes))}
                        )
                      right: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(${ VSub_Name LAST_E_CMD)}
                          right: {(DQ (ebegin))}
                        )
                    )
                )
                (C {(echo)})
              ]
            )
            (Pipeline
              children: [
                (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))})
                (While
                  cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (C {(echo)} 
                          {
                            (DQ (' ') ($ VSub_Name '$GOOD') ('*') ($ VSub_Name '$NORMAL') (' ') 
                              ($ VSub_Name '$REPLY')
                            )
                          }
                        )
                      ]
                      spids: [2560 2575]
                    )
                )
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_CMD)
                  op: Equal
                  rhs: {(DQ (elog))}
                  spids: [2578]
                )
              ]
              spids: [2578]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2499]
        )
      spids: [2495 2498]
    )
    (FuncDef
      name: einfo
      body: 
        (BraceGroup
          children: [
            (C {(__elog_base)} {(INFO)} {(DQ ($ VSub_Star '$*'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_GlobNEqual
                          left: {(${ VSub_Name RC_ENDCOL)}
                          right: {(DQ (yes))}
                        )
                      right: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(${ VSub_Name LAST_E_CMD)}
                          right: {(DQ (ebegin))}
                        )
                    )
                )
                (C {(echo)})
              ]
            )
            (Pipeline
              children: [
                (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))})
                (While
                  cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (C {(echo)} 
                          {
                            (DQ (' ') ($ VSub_Name '$GOOD') ('*') ($ VSub_Name '$NORMAL') (' ') 
                              ($ VSub_Name '$REPLY')
                            )
                          }
                        )
                      ]
                      spids: [2656 2671]
                    )
                )
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_CMD)
                  op: Equal
                  rhs: {(DQ (einfo))}
                  spids: [2674]
                )
              ]
              spids: [2674]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2595]
        )
      spids: [2591 2594]
    )
    (FuncDef
      name: einfon
      body: 
        (BraceGroup
          children: [
            (C {(__elog_base)} {(INFO)} {(DQ ($ VSub_Star '$*'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_GlobNEqual
                          left: {(${ VSub_Name RC_ENDCOL)}
                          right: {(DQ (yes))}
                        )
                      right: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(${ VSub_Name LAST_E_CMD)}
                          right: {(DQ (ebegin))}
                        )
                    )
                )
                (C {(echo)})
              ]
            )
            (C {(echo)} {(-ne)} 
              {(DQ (' ') (${ VSub_Name GOOD) ('*') (${ VSub_Name NORMAL) (' ') ($ VSub_Star '$*'))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_CMD)
                  op: Equal
                  rhs: {(DQ (einfon))}
                  spids: [2752]
                )
              ]
              spids: [2752]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2691]
        )
      spids: [2687 2690]
    )
    (FuncDef
      name: ewarn
      body: 
        (BraceGroup
          children: [
            (C {(__elog_base)} {(WARN)} {(DQ ($ VSub_Star '$*'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_GlobNEqual
                          left: {(${ VSub_Name RC_ENDCOL)}
                          right: {(DQ (yes))}
                        )
                      right: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(${ VSub_Name LAST_E_CMD)}
                          right: {(DQ (ebegin))}
                        )
                    )
                )
                (C {(echo)})
              ]
            )
            (Pipeline
              children: [
                (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))})
                (While
                  cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (SimpleCommand
                          words: [
                            {(echo)}
                            {
                              (DQ (' ') ($ VSub_Name '$WARN') ('*') ($ VSub_Name '$NORMAL') (' ') 
                                ($ VSub_Name '$RC_INDENTATION') ($ VSub_Name '$REPLY')
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 16777215
                              arg_word: {(2)}
                              spids: [2845]
                            )
                          ]
                        )
                      ]
                      spids: [2830 2849]
                    )
                )
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_CMD)
                  op: Equal
                  rhs: {(DQ (ewarn))}
                  spids: [2852]
                )
              ]
              spids: [2852]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2769]
        )
      spids: [2765 2768]
    )
    (FuncDef
      name: eerror
      body: 
        (BraceGroup
          children: [
            (C {(__elog_base)} {(ERROR)} {(DQ ($ VSub_Star '$*'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_GlobNEqual
                          left: {(${ VSub_Name RC_ENDCOL)}
                          right: {(DQ (yes))}
                        )
                      right: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(${ VSub_Name LAST_E_CMD)}
                          right: {(DQ (ebegin))}
                        )
                    )
                )
                (C {(echo)})
              ]
            )
            (Pipeline
              children: [
                (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))})
                (While
                  cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (SimpleCommand
                          words: [
                            {(echo)}
                            {
                              (DQ (' ') ($ VSub_Name '$BAD') ('*') ($ VSub_Name '$NORMAL') (' ') 
                                ($ VSub_Name '$RC_INDENTATION') ($ VSub_Name '$REPLY')
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 16777215
                              arg_word: {(2)}
                              spids: [2945]
                            )
                          ]
                        )
                      ]
                      spids: [2930 2949]
                    )
                )
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_CMD)
                  op: Equal
                  rhs: {(DQ (eerror))}
                  spids: [2952]
                )
              ]
              spids: [2952]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2869]
        )
      spids: [2865 2868]
    )
    (FuncDef
      name: ebegin
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Star '$*'))}
                  spids: [2974]
                )
                (assign_pair lhs:(LhsName name:dots) op:Equal spids:[2979])
                (assign_pair
                  lhs: (LhsName name:spaces)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name RC_DOT_PATTERN>
                        suffix_op: 
                          (PatSub
                            pat: {('?')}
                            replace: {(' ')}
                            do_all: T
                            do_prefix: F
                            do_suffix: F
                          )
                        spids: [2982 2989]
                      )
                    }
                  spids: [2981]
                )
              ]
              spids: [2972]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name RC_DOT_PATTERN)})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dots)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(printf)} 
                                        {
                                          (DQ ('%') 
                                            (ArithSubPart
                                              anode: 
                                                (ArithBinary
                                                  op_id: Arith_Minus
                                                  left: 
                                                    (ArithBinary
                                                      op_id: Arith_Minus
                                                      left: 
                                                        (ArithBinary
                                                          op_id: Arith_Minus
                                                          left: 
                                                            (ArithBinary
                                                              op_id: Arith_Minus
                                                              left: (ArithVarRef name:COLS)
                                                              right: (ArithWord w:{(Lit_Digits 3)})
                                                            )
                                                          right: 
                                                            (ArithWord
                                                              w: 
                                                                {
                                                                  (BracedVarSub
                                                                    token: <VSub_Name RC_INDENTATION>
                                                                    prefix_op: VSub_Pound
                                                                    spids: [3025 3028]
                                                                  )
                                                                }
                                                            )
                                                        )
                                                      right: 
                                                        (ArithWord
                                                          w: 
                                                            {
                                                              (BracedVarSub
                                                                token: <VSub_Name msg>
                                                                prefix_op: VSub_Pound
                                                                spids: [3032 3035]
                                                              )
                                                            }
                                                        )
                                                    )
                                                  right: (ArithWord w:{(Lit_Digits 7)})
                                                )
                                              spids: [3015 3042]
                                            ) (s)
                                          )
                                        } {(SQ )}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [3010 3048]
                              )
                            }
                          spids: [3009]
                        )
                      ]
                      spids: [3009]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dots)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name dots>
                                suffix_op: 
                                  (PatSub
                                    pat: {(${ VSub_Name spaces)}
                                    replace: {(${ VSub_Name RC_DOT_PATTERN)}
                                    do_all: T
                                    do_prefix: F
                                    do_suffix: F
                                  )
                                spids: [3052 3063]
                              )
                            }
                          spids: [3051]
                        )
                      ]
                      spids: [3051]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:msg)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name msg) (${ VSub_Name dots))}
                          spids: [3066]
                        )
                      ]
                      spids: [3066]
                    )
                  ]
                  spids: [16777215 3006]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:msg)
                      op: Equal
                      rhs: {(DQ (${ VSub_Name msg) (' ...'))}
                      spids: [3080]
                    )
                  ]
                  spids: [3080]
                )
              ]
              spids: [3077 3089]
            )
            (C {(einfon)} {(DQ (${ VSub_Name msg))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(${ VSub_Name RC_ENDCOL)}
                      right: {(DQ (yes))}
                    )
                )
                (C {(echo)})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_LEN)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: 
                              (ArithBinary
                                op_id: Arith_Plus
                                left: (ArithWord w:{(Lit_Digits 3)})
                                right: 
                                  (ArithWord
                                    w: 
                                      {
                                        (BracedVarSub
                                          token: <VSub_Name RC_INDENTATION>
                                          prefix_op: VSub_Pound
                                          spids: [3127 3130]
                                        )
                                      }
                                  )
                              )
                            right: 
                              (ArithWord
                                w: 
                                  {
                                    (BracedVarSub
                                      token: <VSub_Name msg>
                                      prefix_op: VSub_Pound
                                      spids: [3134 3137]
                                    )
                                  }
                              )
                          )
                        spids: [3121 3140]
                      )
                    }
                  spids: [3120]
                )
              ]
              spids: [3120]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_CMD)
                  op: Equal
                  rhs: {(DQ (ebegin))}
                  spids: [3143]
                )
              ]
              spids: [3143]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [2969]
        )
      spids: [2965 2968]
    )
    (FuncDef
      name: __eend
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:retval)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)})
                        spids: [3166 3170]
                      )
                    }
                  spids: [3165]
                )
                (assign_pair
                  lhs: (LhsName name:efunc)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(eerror)})
                        spids: [3173 3177]
                      )
                    }
                  spids: [3172]
                )
                (assign_pair lhs:(LhsName name:msg) op:Equal spids:[3179])
              ]
              spids: [3163]
            )
            (C {(shift)} {(2)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name retval)}
                              right: {(DQ (0))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:msg)
                          op: Equal
                          rhs: 
                            {
                              (DQ (${ VSub_Name BRACKET) ('[ ') (${ VSub_Name GOOD) (ok) 
                                (${ VSub_Name BRACKET) (' ]') (${ VSub_Name NORMAL)
                              )
                            }
                          spids: [3209]
                        )
                      ]
                      spids: [3209]
                    )
                  ]
                  spids: [16777215 3206]
                )
              ]
              else_action: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Star '$*')})
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [(C {(${ VSub_Name efunc)} {(DQ ($ VSub_Star '$*'))})]
                      spids: [16777215 3244]
                    )
                  ]
                  spids: [16777215 3256]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:msg)
                      op: Equal
                      rhs: 
                        {
                          (DQ (${ VSub_Name BRACKET) ('[ ') (${ VSub_Name BAD) ('!!') 
                            (${ VSub_Name BRACKET) (' ]') (${ VSub_Name NORMAL)
                          )
                        }
                      spids: [3259]
                    )
                  ]
                  spids: [3259]
                )
              ]
              spids: [3229 3279]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name RC_ENDCOL)}
                              right: {(DQ (yes))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(-e)} {(DQ (${ VSub_Name ENDCOL) (' ') (${ VSub_Name msg))})]
                  spids: [16777215 3301]
                )
              ]
              else_action: [
                (AndOr
                  ops: [Op_DPipe]
                  children: [
                    (DBracket
                      expr: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(${ VSub_Name LAST_E_CMD)}
                          right: {(ebegin)}
                        )
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:LAST_E_LEN)
                          op: Equal
                          rhs: {(0)}
                          spids: [3336]
                        )
                      ]
                      spids: [3336]
                    )
                  ]
                )
                (C {(printf)} 
                  {
                    (DQ ('%') 
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Minus
                            left: 
                              (ArithBinary
                                op_id: Arith_Minus
                                left: (ArithVarRef name:COLS)
                                right: (ArithVarRef name:LAST_E_LEN)
                              )
                            right: (ArithWord w:{(Lit_Digits 7)})
                          )
                        spids: [3344 3357]
                      ) ('s%b') (Lit_Other '\\') (n)
                    )
                  } {(SQ )} {(DQ (${ VSub_Name msg))}
                )
              ]
              spids: [3319 3373]
            )
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name retval)}
            )
          ]
          spids: [3160]
        )
      spids: [3156 3159]
    )
    (FuncDef
      name: eend
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:retval)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)})
                        spids: [3396 3400]
                      )
                    }
                  spids: [3395]
                )
              ]
              spids: [3393]
            )
            (C {(shift)})
            (C {(__eend)} {(${ VSub_Name retval)} {(eerror)} {(DQ ($ VSub_Star '$*'))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LAST_E_CMD)
                  op: Equal
                  rhs: {(DQ (eend))}
                  spids: [3421]
                )
              ]
              spids: [3421]
            )
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name retval)}
            )
          ]
          spids: [3390]
        )
      spids: [3386 3389]
    )
    (FuncDef
      name: __unset_colors
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:COLS) op:Equal rhs:{(80)} spids:[3443])]
              spids: [3443]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:ENDCOL) op:Equal rhs:{(EmptyPart)} spids:[3447])]
              spids: [3447]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:GOOD) op:Equal rhs:{(EmptyPart)} spids:[3451])]
              spids: [3451]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:WARN) op:Equal rhs:{(EmptyPart)} spids:[3454])]
              spids: [3454]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:BAD) op:Equal rhs:{(EmptyPart)} spids:[3457])]
              spids: [3457]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:NORMAL) op:Equal rhs:{(EmptyPart)} spids:[3460])]
              spids: [3460]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:HILITE) op:Equal rhs:{(EmptyPart)} spids:[3463])]
              spids: [3463]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BRACKET)
                  op: Equal
                  rhs: {(EmptyPart)}
                  spids: [3466]
                )
              ]
              spids: [3466]
            )
          ]
          spids: [3440]
        )
      spids: [3436 3439]
    )
    (FuncDef
      name: __set_colors
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:COLS)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name COLUMNS>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)})
                        spids: [3479 3483]
                      )
                    }
                  spids: [3478]
                )
              ]
              spids: [3478]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {($ VSub_Name '$COLS')}
                          right: {(0)}
                        )
                      right: 
                        (BoolBinary
                          op_id: BoolBinary_GlobNEqual
                          left: {($ VSub_Name '$EBUILD_PHASE')}
                          right: {(depend)}
                        )
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:COLS)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Sentence
                                    child: 
                                      (C {(set)} {(--)} 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (AndOr
                                                    ops: [Op_DPipe]
                                                    children: [
                                                      (Subshell
                                                        child: 
                                                          (SimpleCommand
                                                            words: [{(stty)} {(size)}]
                                                            redirects: [
                                                              (Redir
                                                                op_id: Redir_Less
                                                                fd: 16777215
                                                                arg_word: {(/dev/tty)}
                                                                spids: [3545]
                                                              )
                                                            ]
                                                          )
                                                        redirects: [
                                                          (Redir
                                                            op_id: Redir_Great
                                                            fd: 2
                                                            arg_word: {(/dev/null)}
                                                            spids: [3550]
                                                          )
                                                        ]
                                                        spids: [3539 3548]
                                                      )
                                                      (C {(echo)} {(24)} {(80)})
                                                    ]
                                                  )
                                                ]
                                              )
                                            left_token: <Left_CommandSub '$('>
                                            spids: [3537 3561]
                                          )
                                        }
                                      )
                                    terminator: <Op_Semi ';'>
                                  )
                                  (C {(echo)} {($ VSub_Number '$2')})
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [3532 3568]
                          )
                        }
                      spids: [3531]
                    )
                  ]
                  spids: [3531]
                )
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_Great
                      left: (ArithVarRef name:COLS)
                      right: (ArithWord w:{(Lit_Digits 0)})
                    )
                )
                (DParen
                  child: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:COLS)
                      right: (ArithWord w:{(Lit_Digits 80)})
                    )
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ENDCOL)
                  op: Equal
                  rhs: 
                    {
                      (SingleQuotedPart
                        left: <Left_DollarSingleQuote "$'">
                        tokens: [
                          <Char_OneChar '\\e'>
                          <Char_Literals '[A'>
                          <Char_OneChar '\\e'>
                          <Char_Literals '['>
                        ]
                      ) 
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Minus
                            left: (ArithVarRef name:COLS)
                            right: (ArithWord w:{(Lit_Digits 8)})
                          )
                        spids: [3612 3621]
                      ) (SQ <C>)
                    }
                  spids: [3605]
                )
              ]
              spids: [3605]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name PORTAGE_COLORMAP))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(eval)} {(${ VSub_Name PORTAGE_COLORMAP)})]
                  spids: [16777215 3643]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:GOOD)
                      op: Equal
                      rhs: 
                        {
                          (SingleQuotedPart
                            left: <Left_DollarSingleQuote "$'">
                            tokens: [<Char_OneChar '\\e'> <Char_Literals '[32;01m'>]
                          )
                        }
                      spids: [3656]
                    )
                  ]
                  spids: [3656]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:WARN)
                      op: Equal
                      rhs: 
                        {
                          (SingleQuotedPart
                            left: <Left_DollarSingleQuote "$'">
                            tokens: [<Char_OneChar '\\e'> <Char_Literals '[33;01m'>]
                          )
                        }
                      spids: [3663]
                    )
                  ]
                  spids: [3663]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:BAD)
                      op: Equal
                      rhs: 
                        {
                          (SingleQuotedPart
                            left: <Left_DollarSingleQuote "$'">
                            tokens: [<Char_OneChar '\\e'> <Char_Literals '[31;01m'>]
                          )
                        }
                      spids: [3670]
                    )
                  ]
                  spids: [3670]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:HILITE)
                      op: Equal
                      rhs: 
                        {
                          (SingleQuotedPart
                            left: <Left_DollarSingleQuote "$'">
                            tokens: [<Char_OneChar '\\e'> <Char_Literals '[36;01m'>]
                          )
                        }
                      spids: [3677]
                    )
                  ]
                  spids: [3677]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:BRACKET)
                      op: Equal
                      rhs: 
                        {
                          (SingleQuotedPart
                            left: <Left_DollarSingleQuote "$'">
                            tokens: [<Char_OneChar '\\e'> <Char_Literals '[34;01m'>]
                          )
                        }
                      spids: [3684]
                    )
                  ]
                  spids: [3684]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:NORMAL)
                      op: Equal
                      rhs: 
                        {
                          (SingleQuotedPart
                            left: <Left_DollarSingleQuote "$'">
                            tokens: [<Char_OneChar '\\e'> <Char_Literals '[0m'>]
                          )
                        }
                      spids: [3691]
                    )
                  ]
                  spids: [3691]
                )
              ]
              spids: [3653 3698]
            )
          ]
          spids: [3475]
        )
      spids: [3471 3474]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:RC_ENDCOL) op:Equal rhs:{(DQ (yes))} spids:[3703])]
      spids: [3703]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:RC_INDENTATION) op:Equal rhs:{(SQ )} spids:[3708])]
      spids: [3708]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:RC_DEFAULT_INDENT) op:Equal rhs:{(2)} spids:[3712])]
      spids: [3712]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:RC_DOT_PATTERN) op:Equal rhs:{(SQ )} spids:[3715])]
      spids: [3715]
    )
    (Case
      to_match: 
        {
          (DQ 
            (BracedVarSub
              token: <VSub_Name NOCOLOR>
              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
              spids: [3723 3727]
            )
          )
        }
      arms: [
        (case_arm
          pat_list: [{(yes)} {(true)}]
          action: [(C {(__unset_colors)})]
          spids: [3733 3736 3742 16777215]
        )
        (case_arm
          pat_list: [{(no)} {(false)}]
          action: [(C {(__set_colors)})]
          spids: [3745 3748 3754 16777215]
        )
      ]
      spids: [3720 3730 3756]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(${ VSub_Name USERLAND)}))
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Case
              to_match: 
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(uname)} {(-s)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [3778 3782]
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (BSD)} {(DragonFly)}]
                  action: [(C {(export)} {(Lit_VarLike 'USERLAND=') (DQ (BSD))})]
                  spids: [3787 3791 3802 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(export)} {(Lit_VarLike 'USERLAND=') (DQ (GNU))})]
                  spids: [3805 3806 3817 16777215]
                )
              ]
              spids: [3776 3784 3820]
            )
          ]
          spids: [16777215 3773]
        )
      ]
      spids: [16777215 3822]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(${ VSub_Name XARGS)}))
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Case
              to_match: {(${ VSub_Name USERLAND)}
              arms: [
                (case_arm
                  pat_list: [{(BSD)}]
                  action: [(C {(export)} {(Lit_VarLike 'XARGS=') (DQ (xargs))})]
                  spids: [3851 3852 3863 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(export)} {(Lit_VarLike 'XARGS=') (DQ ('xargs -r'))})]
                  spids: [3866 3867 3878 16777215]
                )
              ]
              spids: [3842 3848 3881]
            )
          ]
          spids: [16777215 3839]
        )
      ]
      spids: [16777215 3883]
    )
    (FuncDef
      name: hasq
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(has)} {($ VSub_Name '$EBUILD_PHASE')} {(prerm)} {(postrm)})
                (C {(eqawarn)} 
                  {(DQ ("QA Notice: The 'hasq' function is deprecated (replaced by 'has')"))}
                )
              ]
            )
            (C {(has)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [3890]
        )
      spids: [3886 3889]
    )
    (FuncDef
      name: hasv
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [(Sentence child:(C {(has)} {(DQ ($ VSub_At '$@'))}) terminator:<Op_Semi ';'>)]
                  action: [
                    (C {(echo)} {(DQ ($ VSub_Number '$1'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  spids: [16777215 3938]
                )
              ]
              spids: [16777215 3953]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [3925]
        )
      spids: [3921 3924]
    )
    (FuncDef
      name: has
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:needle)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [3972]
                )
              ]
              spids: [3970]
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[3982])]
              spids: [3980]
            )
            (ForEach
              iter_name: x
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name x))} {(Lit_Other '=')} 
                          {(DQ (${ VSub_Name needle))} {(Lit_Other ']')}
                        )
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                  spids: [3996 4024]
                )
              spids: [3990 3994]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [3967]
        )
      spids: [3963 3966]
    )
    (FuncDef
      name: __repo_attr
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:appropriate_section)
                  op: Equal
                  rhs: {(0)}
                  spids: [4043]
                )
                (assign_pair
                  lhs: (LhsName name:exit_status)
                  op: Equal
                  rhs: {(1)}
                  spids: [4046]
                )
                (assign_pair lhs:(LhsName name:line) op:Equal spids:[4049])
                (assign_pair
                  lhs: (LhsName name:saved_extglob_shopt)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(shopt)} {(-p)} {(extglob)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [4052 4058]
                      )
                    }
                  spids: [4051]
                )
              ]
              spids: [4041]
            )
            (C {(shopt)} {(-s)} {(extglob)})
            (While
              cond: [(Sentence child:(C {(read)} {(line)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DAmp Op_DAmp]
                      children: [
                        (DBracket
                          expr: 
                            (LogicalAnd
                              left: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(${ VSub_Name appropriate_section)}
                                  right: {(0)}
                                )
                              right: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(${ VSub_Name line)}
                                  right: {(DQ ('[') ($ VSub_Number '$1') (']'))}
                                )
                            )
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:appropriate_section)
                              op: Equal
                              rhs: {(1)}
                              spids: [4106]
                            )
                          ]
                          spids: [4106]
                        )
                        (ControlFlow token:<ControlFlow_Continue continue>)
                      ]
                    )
                    (AndOr
                      ops: [Op_DAmp Op_DAmp]
                      children: [
                        (DBracket
                          expr: 
                            (LogicalAnd
                              left: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(${ VSub_Name appropriate_section)}
                                  right: {(1)}
                                )
                              right: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(${ VSub_Name line)}
                                  right: {(DQ ('[')) (Lit_Other '*') (DQ (']'))}
                                )
                            )
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:appropriate_section)
                              op: Equal
                              rhs: {(0)}
                              spids: [4144]
                            )
                          ]
                          spids: [4144]
                        )
                        (ControlFlow token:<ControlFlow_Continue continue>)
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalAnd
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobDEqual
                                          left: {(${ VSub_Name appropriate_section)}
                                          right: {(1)}
                                        )
                                      right: 
                                        (BoolBinary
                                          op_id: BoolBinary_EqualTilde
                                          left: {(${ VSub_Name line)}
                                          right: 
                                            {(Lit_Other '^') (${ VSub_Number 2) (Lit_Other '[') 
                                              (Lit_Other '[') (Lit_Other ':') (space) (Lit_Other ':') (Lit_Other ']') (Lit_Other ']') (Lit_Other '*') (Lit_Other '=')
                                            }
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name line>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VOp1_DPound
                                        arg_word: {($ VSub_Number '$2') ('*( )=*( )')}
                                      )
                                    spids: [4211 4216]
                                  )
                                )
                              }
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:exit_status)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [4220]
                                )
                              ]
                              spids: [4220]
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [16777215 4205]
                        )
                      ]
                      spids: [16777215 4227]
                    )
                  ]
                  spids: [4075 4230]
                )
              redirects: [
                (Redir
                  op_id: Redir_TLess
                  fd: 16777215
                  arg_word: {(DQ (${ VSub_Name PORTAGE_REPOSITORIES))}
                  spids: [4232]
                )
              ]
            )
            (C {(eval)} {(DQ (${ VSub_Name saved_extglob_shopt))})
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name exit_status)}
            )
          ]
          spids: [4038]
        )
      spids: [4034 4037]
    )
    (FuncDef
      name: __eqaquote
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:v)
                  op: Equal
                  rhs: {(${ VSub_Number 1)}
                  spids: [4277]
                )
                (assign_pair
                  lhs: (LhsName name:esc)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [4282]
                )
              ]
              spids: [4275]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:v)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name v>
                        suffix_op: 
                          (PatSub
                            pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>)}
                            replace: 
                              {(EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar '\\\\'>
                                )
                              }
                            do_all: T
                            do_prefix: F
                            do_suffix: F
                          )
                        spids: [4293 4301]
                      )
                    }
                  spids: [4292]
                )
              ]
              spids: [4292]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:v)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name v>
                        suffix_op: 
                          (PatSub
                            pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)}
                            replace: 
                              {(EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar '\\"'>
                                )
                              }
                            do_all: T
                            do_prefix: F
                            do_suffix: F
                          )
                        spids: [4309 4317]
                      )
                    }
                  spids: [4308]
                )
              ]
              spids: [4308]
            )
            (While
              cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {(-n)} {(DQ (${ VSub_Name esc) (${ VSub_Name REPLY))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:esc)
                          op: Equal
                          rhs: {(SQ <'\\n'>)}
                          spids: [4348]
                        )
                      ]
                      spids: [4348]
                    )
                  ]
                  spids: [4331 4354]
                )
              redirects: [
                (Redir
                  op_id: Redir_TLess
                  fd: 16777215
                  arg_word: {(DQ (${ VSub_Name v))}
                  spids: [4356]
                )
              ]
            )
          ]
          spids: [4272]
        )
      spids: [4268 4271]
    )
    (FuncDef
      name: __eqatag
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:tag) op:Equal spids:[4405])
                (assign_pair lhs:(LhsName name:i) op:Equal spids:[4407])
                (assign_pair
                  lhs: (LhsName name:filenames)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [4409]
                )
                (assign_pair
                  lhs: (LhsName name:data)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [4413]
                )
                (assign_pair
                  lhs: (LhsName name:verbose)
                  op: Equal
                  rhs: {(EmptyPart)}
                  spids: [4417]
                )
              ]
              spids: [4403]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Number 1)}
                              right: {(BoolUnary_v -v)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:verbose)
                          op: Equal
                          rhs: {(1)}
                          spids: [4439]
                        )
                      ]
                      spids: [4439]
                    )
                    (C {(shift)})
                  ]
                  spids: [16777215 4436]
                )
              ]
              spids: [16777215 4446]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tag)
                  op: Equal
                  rhs: {(${ VSub_Number 1)}
                  spids: [4450]
                )
              ]
              spids: [4450]
            )
            (C {(shift)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (DBracket expr:(BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name tag)}))
                (C {(die)} {(DQ (${ VSub_Name FUNCNAME) (': no tag specified'))})
              ]
            )
            (ForEach
              iter_name: i
              do_arg_iter: T
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(${ VSub_Name i)}
                                      right: {(/) (Lit_Other '*')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:filenames)
                                  op: PlusEqual
                                  rhs: {(ArrayLiteralPart words:[{(DQ (${ VSub_Name i))}])}
                                  spids: [4513]
                                )
                              ]
                              spids: [4513]
                            )
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name verbose)})
                                )
                                (C {(eqawarn)} {(DQ ('  ') (${ VSub_Name i))})
                              ]
                            )
                          ]
                          spids: [16777215 4510]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(${ VSub_Name i)}
                                      right: 
                                        {(Lit_Other '*') (BoolBinary_GlobEqual '=') (Lit_Other '*')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:data)
                                  op: PlusEqual
                                  rhs: {(ArrayLiteralPart words:[{(DQ (${ VSub_Name i))}])}
                                  spids: [4567]
                                )
                              ]
                              spids: [4567]
                            )
                          ]
                          spids: [4547 4564]
                        )
                      ]
                      else_action: [
                        (C {(die)} 
                          {(DQ (${ VSub_Name FUNCNAME) (': invalid parameter: ') (${ VSub_Name i))}
                        )
                      ]
                      spids: [4579 4595]
                    )
                  ]
                  spids: [4491 4598]
                )
              spids: [16777215 16777215]
            )
            (Subshell
              child: 
                (CommandList
                  children: [
                    (C {(echo)} {(DQ ('- tag: ') (${ VSub_Name tag))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (WordTest
                                      w: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name data>
                                            bracket_op: (WholeArray op_id:Lit_At)
                                            spids: [4619 4624]
                                          )
                                        }
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ('  data:'))})
                            (ForEach
                              iter_name: i
                              iter_words: [
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name data>
                                      bracket_op: (WholeArray op_id:Lit_At)
                                      spids: [4646 4651]
                                    )
                                  )
                                }
                              ]
                              do_arg_iter: F
                              body: 
                                (DoGroup
                                  children: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('    ') 
                                          (BracedVarSub
                                            token: <VSub_Name i>
                                            suffix_op: 
                                              (StringUnary
                                                op_id: VOp1_DPercent
                                                arg_word: {('=*')}
                                              )
                                            spids: [4662 4666]
                                          ) (': ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (C {(__eqaquote)} 
                                                    {
                                                      (DQ 
                                                        (BracedVarSub
                                                          token: <VSub_Name i>
                                                          suffix_op: 
                                                            (StringUnary
                                                              op_id: VOp1_Pound
                                                              arg_word: {('*=')}
                                                            )
                                                          spids: [4673 4677]
                                                        )
                                                      )
                                                    }
                                                  )
                                                ]
                                              )
                                            left_token: <Left_CommandSub '$('>
                                            spids: [4669 4679]
                                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                        )
                                      }
                                    )
                                  ]
                                  spids: [4655 4684]
                                )
                              spids: [4644 4653]
                            )
                          ]
                          spids: [16777215 4629]
                        )
                      ]
                      spids: [16777215 4687]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (WordTest
                                      w: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name filenames>
                                            bracket_op: (WholeArray op_id:Lit_At)
                                            spids: [4694 4699]
                                          )
                                        }
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ('  files:'))})
                            (ForEach
                              iter_name: i
                              iter_words: [
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name filenames>
                                      bracket_op: (WholeArray op_id:Lit_At)
                                      spids: [4721 4726]
                                    )
                                  )
                                }
                              ]
                              do_arg_iter: F
                              body: 
                                (DoGroup
                                  children: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('    - ') 
                                          (EscapedLiteralPart
                                            token: <Lit_EscapedChar '\\"'>
                                          ) 
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [(C {(__eqaquote)} {(DQ (${ VSub_Name i))})]
                                              )
                                            left_token: <Left_CommandSub '$('>
                                            spids: [4738 4746]
                                          ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                        )
                                      }
                                    )
                                  ]
                                  spids: [4730 4751]
                                )
                              spids: [4719 4728]
                            )
                          ]
                          spids: [16777215 4704]
                        )
                      ]
                      spids: [16777215 4754]
                    )
                  ]
                )
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {(DQ (${ VSub_Name T)) (/qa.log)}
                  spids: [4759]
                )
              ]
              spids: [4602 4757]
            )
          ]
          spids: [4400]
        )
      spids: [4396 4399]
    )
    (C {(true)})
  ]
)