(command.CommandList
  children: [
    (C {(unalias)} {(-a)})
    (C {(unset)} {(BASH_COMPAT)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/isolated-functions.sh))})
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:40)
          arg_word: {(1)}
        )
      ]
    )
    (command.ShFunction
      name: __check_bash_version
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(maj)} {(min)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(___eapi_bash_3_2)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:79)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:maj)
                          op: assign_op.Equal
                          rhs: {(3)}
                          spids: [84]
                        )
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:min)
                          op: assign_op.Equal
                          rhs: {(2)}
                          spids: [87]
                        )
                      ]
                    )
                  ]
                  spids: [75 81]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(___eapi_bash_4_2)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:95)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:maj)
                          op: assign_op.Equal
                          rhs: {(4)}
                          spids: [100]
                        )
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:min)
                          op: assign_op.Equal
                          rhs: {(2)}
                          spids: [103]
                        )
                      ]
                    )
                  ]
                  spids: [91 97]
                )
              ]
              else_action: [
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:110)
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_lt
                                  left: 
                                    {
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:BASH_VERSINFO span_id:126)
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
                                          )
                                      )
                                    }
                                  right: {(${ Id.VSub_Name maj)}
                                )
                            )
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_eq
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: 
                                              (Token
                                                id: Id.VSub_Name
                                                val: BASH_VERSINFO
                                                span_id: 146
                                              )
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
                                              )
                                          )
                                        }
                                      right: {(${ Id.VSub_Name maj)}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_lt
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: 
                                              (Token
                                                id: Id.VSub_Name
                                                val: BASH_VERSINFO
                                                span_id: 161
                                              )
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                                              )
                                          )
                                        }
                                      right: {(${ Id.VSub_Name min)}
                                    )
                                )
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:175)
                    )
                  ]
                  action: [
                    (C {(die)} 
                      {
                        (DQ ('>=bash-') (${ Id.VSub_Name maj) (.) (${ Id.VSub_Name min) (' is required'))
                      }
                    )
                  ]
                  spids: [121 177]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:BASH_COMPAT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name maj) (.) (${ Id.VSub_Name min))}
                  spids: [211]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {(___eapi_bash_3_2)})
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_gt
                                  left: 
                                    {
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:BASH_VERSINFO span_id:261)
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
                                          )
                                      )
                                    }
                                  right: {(3)}
                                )
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:273)
                    )
                  ]
                  action: [(C {(shopt)} {(-s)} {(compat32)})]
                  spids: [252 275]
                )
              ]
            )
          ]
        )
    )
    (C {(__check_bash_version)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                      right: {(depend)}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:304)
            )
          ]
          action: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/phase-functions.sh))})
                (C {(die)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/save-ebuild-env.sh))})
                (C {(die)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/phase-helpers.sh))})
                (C {(die)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(source)} {(DQ (${ Id.VSub_Name PORTAGE_BIN_PATH) (/bashrc-functions.sh))})
                (C {(die)})
              ]
            )
          ]
          spids: [292 306]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:funcs)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ ('diropts docompress exeopts get_KV insopts\n') 
                    ('\t\tKV_major KV_micro KV_minor KV_to_int\n') ('\t\tlibopts register_die_hook register_success_hook\n') ('\t\t__strip_duplicate_slashes\n') 
                    ('\t\tuse useq usev use_with use_enable')
                  )
                }
              spids: [379]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {(___eapi_has_usex)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:funcs)
                  op: assign_op.PlusEqual
                  rhs: {(DQ (' usex'))}
                  spids: [393]
                )
              ]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {(___eapi_has_in_iuse)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:funcs)
                  op: assign_op.PlusEqual
                  rhs: {(DQ (' in_iuse'))}
                  spids: [403]
                )
              ]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {(___eapi_has_get_libdir)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:funcs)
                  op: assign_op.PlusEqual
                  rhs: {(DQ (' get_libdir'))}
                  spids: [413]
                )
              ]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:funcs)
              op: assign_op.PlusEqual
              rhs: {(DQ (' best_version has_version portageq'))}
              spids: [427]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {(___eapi_has_master_repositories)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:funcs)
                  op: assign_op.PlusEqual
                  rhs: {(DQ (' master_repositories'))}
                  spids: [437]
                )
              ]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {(___eapi_has_repository_path)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:funcs)
                  op: assign_op.PlusEqual
                  rhs: {(DQ (' repository_path'))}
                  spids: [447]
                )
              ]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {(___eapi_has_available_eclasses)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:funcs)
                  op: assign_op.PlusEqual
                  rhs: {(DQ (' available_eclasses'))}
                  spids: [457]
                )
              ]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {(___eapi_has_eclass_path)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:funcs)
                  op: assign_op.PlusEqual
                  rhs: {(DQ (' eclass_path'))}
                  spids: [467]
                )
              ]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {(___eapi_has_license_path)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:funcs)
                  op: assign_op.PlusEqual
                  rhs: {(DQ (' license_path'))}
                  spids: [477]
                )
              ]
            )
          ]
        )
        (command.ForEach
          iter_name: x
          iter_words: [{(${ Id.VSub_Name funcs)}]
          do_arg_iter: F
          body: 
            (command.DoGroup
              children: [
                (C {(eval)} 
                  {
                    (DQ (${ Id.VSub_Name x) ('() { die ') 
                      (word_part.EscapedLiteral
                        token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:505)
                      ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:506)) 
                      ('{FUNCNAME}() calls are not allowed in global scope') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:508)) ('; }')
                    )
                  }
                )
              ]
            )
        )
        (C {(unset)} {(funcs)} {(x)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_PORTAGE_ORIG_PATH)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name PATH)}
              spids: [532]
            )
          ]
        )
        (C {(export)} {(Id.Lit_VarLike 'PATH=') (/dev/null)})
        (command.ShFunction
          name: command_not_found_handle
          body: 
            (command.BraceGroup
              children: [
                (C {(die)} 
                  {
                    (DQ ('External commands disallowed while sourcing ebuild: ') (${ Id.VSub_Star '*'))
                  }
                )
              ]
            )
        )
      ]
    )
    (C {(unset)} {(BASH_ENV)})
    (C {(export)} 
      {(Id.Lit_VarLike 'PORTAGE_BZIP2_COMMAND=') 
        (braced_var_sub
          token: (Token id:Id.VSub_Name val:PORTAGE_BZIP2_COMMAND span_id:596)
          suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(bzip2)})
        )
      }
    )
    (command.ShFunction
      name: __qa_source
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'shopts=') 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:626)
                  command_list: (command.CommandList children:[(C {(shopt)})])
                )
              } {(Id.Lit_VarLike 'OLDIFS=') (DQ ($ Id.VSub_DollarName '$IFS'))}
            )
            (C {(local)} {(retval)})
            (C {(source)} {(DQ ($ Id.VSub_At '$@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:retval)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [648]
                )
              ]
            )
            (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (e)})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName '$shopts')}
                      right: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:664)
                            command_list: (command.CommandList children:[(C {(shopt)})])
                          )
                        }
                    )
                )
                (C {(eqawarn)} 
                  {
                    (DQ 
                      (
"QA Notice: Global shell options changed and were not restored while sourcing '"
                      ) ($ Id.VSub_Star '$*') ("'")
                    )
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {(DQ ($ Id.VSub_DollarName '$IFS'))}
                      right: {(DQ ($ Id.VSub_DollarName '$OLDIFS'))}
                    )
                )
                (C {(eqawarn)} 
                  {
                    (DQ ("QA Notice: Global IFS changed and was not restored while sourcing '") 
                      ($ Id.VSub_Star '$*') ("'")
                    )
                  }
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:708)
              arg_word: {($ Id.VSub_DollarName '$retval')}
            )
          ]
        )
    )
    (command.ShFunction
      name: __qa_call
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'shopts=') 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:725)
                  command_list: (command.CommandList children:[(C {(shopt)})])
                )
              } {(Id.Lit_VarLike 'OLDIFS=') (DQ ($ Id.VSub_DollarName '$IFS'))}
            )
            (C {(local)} {(retval)})
            (C {(DQ ($ Id.VSub_At '$@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:retval)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [745]
                )
              ]
            )
            (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (e)})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {($ Id.VSub_DollarName '$shopts')}
                      right: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:761)
                            command_list: (command.CommandList children:[(C {(shopt)})])
                          )
                        }
                    )
                )
                (C {(eqawarn)} 
                  {
                    (DQ 
                      (
"QA Notice: Global shell options changed and were not restored while calling '"
                      ) ($ Id.VSub_Star '$*') ("'")
                    )
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobNEqual
                      left: {(DQ ($ Id.VSub_DollarName '$IFS'))}
                      right: {(DQ ($ Id.VSub_DollarName '$OLDIFS'))}
                    )
                )
                (C {(eqawarn)} 
                  {
                    (DQ ("QA Notice: Global IFS changed and was not restored while calling '") 
                      ($ Id.VSub_Star '$*') ("'")
                    )
                  }
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:805)
              arg_word: {($ Id.VSub_DollarName '$retval')}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EBUILD_SH_ARGS)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Star '$*'))}
          spids: [812]
        )
      ]
    )
    (C {(shift)} {($ Id.VSub_Pound '$#')})
    (C {(unset)} {(GZIP)} {(BZIP)} {(BZIP2)} {(CDPATH)} {(GREP_OPTIONS)} {(GREP_COLOR)} {(GLOBIGNORE)})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobNEqual
              left: {($ Id.VSub_DollarName '$PORTAGE_QUIET')}
              right: {(DQ )}
            )
        )
        (C {(export)} {(PORTAGE_QUIET)})
      ]
    )
    (command.ShFunction
      name: __sb_append_var
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(local)} {(Id.Lit_VarLike '_v=') ($ Id.VSub_Number '$1')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:876)
            )
            (C {(shift)})
            (C {(local)} {(Id.Lit_VarLike 'var=') (DQ (SANDBOX_) (${ Id.VSub_Name _v))})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalOr
                      left: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_Number '$1')})
                      right: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_Number '$2')})
                    )
                )
                (C {(die)} 
                  {
                    (DQ ('Usage: add') 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:912)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(tr)} {(DQ ('[:upper:]'))} {(DQ ('[:lower:]'))}]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_TLess val:'<<<' span_id:926)
                                    fd: -1
                                    arg_word: {(DQ (${ Id.VSub_Name _v))}
                                  )
                                ]
                                more_env: [(env_pair name:LC_ALL val:{(C)} spids:[913])]
                              )
                            ]
                          )
                      ) (' <colon-delimited list of paths>')
                    )
                  }
                )
              ]
            )
            (C {(export)} 
              {(${ Id.VSub_Name var) (Id.Lit_Equals '=') 
                (DQ 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:var span_id:947)
                    prefix_op: (Id.VSub_Bang)
                    suffix_op: 
                      (suffix_op.Unary
                        op_id: Id.VTest_ColonPlus
                        arg_word: 
                          {
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:var span_id:951)
                              prefix_op: (Id.VSub_Bang)
                            ) (':')
                          }
                      )
                  ) ($ Id.VSub_Number '$1')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: addread
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(__sb_append_var)} {(READ)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:983)
            )
          ]
        )
    )
    (command.ShFunction
      name: addwrite
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(__sb_append_var)} {(WRITE)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1001)
            )
          ]
        )
    )
    (command.ShFunction
      name: adddeny
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(__sb_append_var)} {(DENY)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1019)
            )
          ]
        )
    )
    (command.ShFunction
      name: addpredict
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(__sb_append_var)} {(PREDICT)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1037)
            )
          ]
        )
    )
    (C {(addwrite)} {(DQ (${ Id.VSub_Name PORTAGE_TMPDIR))})
    (C {(addread)} {(DQ ('/:') (${ Id.VSub_Name PORTAGE_TMPDIR))})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{(${ Id.VSub_Name PORTAGE_GPG_DIR)})
        )
        (C {(addpredict)} {(DQ (${ Id.VSub_Name PORTAGE_GPG_DIR))})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_w child:{($ Id.VSub_DollarName '$T')})
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1093)
            )
          ]
          action: [
            (C {(export)} {(Id.Lit_VarLike 'TEMP=') ($ Id.VSub_DollarName '$T')})
            (C {(export)} {(Id.Lit_VarLike 'TMP=') ($ Id.VSub_DollarName '$T')})
            (C {(export)} {(Id.Lit_VarLike 'TMPDIR=') ($ Id.VSub_DollarName '$T')})
          ]
          spids: [1083 1095]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobEqual
                      left: {($ Id.VSub_DollarName '$SANDBOX_ON')}
                      right: {(1)}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1127)
            )
          ]
          action: [
            (command.ForEach
              iter_name: x
              iter_words: [{(TEMP)} {(TMP)} {(TMPDIR)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: 
                                {
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:x span_id:1155)
                                    prefix_op: (Id.VSub_Bang)
                                  )
                                }
                            )
                        )
                        (C {(addwrite)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:x span_id:1167)
                                prefix_op: (Id.VSub_Bang)
                              )
                            )
                          }
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(unset)} {(x)})
          ]
          spids: [1115 1129]
        )
      ]
    )
    (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (0)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{(${ Id.VSub_Name HOME)})
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1211)
            )
          ]
          action: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {(cd)} {(DQ (${ Id.VSub_Name HOME))}) (C {(die)})]
            )
          ]
          spids: [1200 1213]
        )
      ]
      else_action: [
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {(cd)} {(DQ (${ Id.VSub_Name PORTAGE_PYM_PATH))})
            (C {(die)} 
              {(DQ ("PORTAGE_PYM_PATH does not exist: '") (${ Id.VSub_Name PORTAGE_PYM_PATH) ("'"))}
            )
          ]
        )
      ]
    )
    (C {(umask)} {(022)})
    (command.ShFunction
      name: debug-print
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalOr
                      left: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobEqual
                          left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                          right: {(depend)}
                        )
                      right: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.LogicalNot
                              child: (bool_expr.Unary op_id:Id.BoolUnary_d child:{(${ Id.VSub_Name T)})
                            )
                          right: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_eq
                              left: {(${ Id.VSub_Pound '#')}
                              right: {(0)}
                            )
                        )
                    )
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:1343)
                  arg_word: {(0)}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(${ Id.VSub_Name ECLASS_DEBUG_OUTPUT)}
                              right: {(on)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1362)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(printf)}
                        {(SQ (Token id:Id.Lit_Chars val:'debug: %s\\n' span_id:1370))}
                        {(DQ (${ Id.VSub_At '@'))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1379)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                  ]
                  spids: [1349 1364]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {(${ Id.VSub_Name ECLASS_DEBUG_OUTPUT)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1394)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(printf)}
                        {(SQ (Token id:Id.Lit_Chars val:'debug: %s\\n' span_id:1402))}
                        {(DQ (${ Id.VSub_At '@'))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1411)
                          fd: -1
                          arg_word: {(DQ (${ Id.VSub_Name ECLASS_DEBUG_OUTPUT))}
                        )
                      ]
                    )
                  ]
                  spids: [1383 1396]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_w
                              child: {($ Id.VSub_DollarName '$T')}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1434)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(printf)}
                        {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:1446))}
                        {(DQ (${ Id.VSub_At '@'))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:1455)
                          fd: -1
                          arg_word: {(DQ (${ Id.VSub_Name T) (/eclass-debug.log))}
                        )
                      ]
                    )
                    (C {(chgrp)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:PORTAGE_GRPNAME span_id:1473)
                            suffix_op: 
                              (suffix_op.Unary
                                op_id: Id.VTest_ColonHyphen
                                arg_word: {(portage)}
                              )
                          )
                        )
                      } {(DQ (${ Id.VSub_Name T) (/eclass-debug.log))}
                    )
                    (C {(chmod)} {(g) (Id.Lit_Other '+') (w)} 
                      {(DQ (${ Id.VSub_Name T) (/eclass-debug.log))}
                    )
                  ]
                  spids: [1424 1436]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: debug-print-function
      body: 
        (command.BraceGroup
          children: [
            (C {(debug-print)} 
              {
                (DQ (${ Id.VSub_Number 1) (': entering function, parameters: ') 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Star val:'*' span_id:1525)
                    suffix_op: (suffix_op.Slice begin:(arith_expr.ArithWord w:{(Id.Lit_Digits 2)}))
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: debug-print-section
      body: 
        (command.BraceGroup
          children: [(C {(debug-print)} {(DQ ('now in section ') (${ Id.VSub_Star '*'))})]
        )
    )
    (C {(declare)} {(-ix)} {(Id.Lit_VarLike 'ECLASS_DEPTH=') (0)})
    (command.ShFunction
      name: inherit
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ECLASS_DEPTH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$ECLASS_DEPTH')})
                            right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                          )
                      )
                    }
                  spids: [1570]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.Op_Great
                              left: {(${ Id.VSub_Name ECLASS_DEPTH)}
                              right: {(1)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1594)
                    )
                  ]
                  action: [
                    (C {(debug-print)} 
                      {
                        (DQ ('*** Multiple Inheritence (Level: ') (${ Id.VSub_Name ECLASS_DEPTH) (')'))
                      }
                    )
                  ]
                  spids: [1581 1596]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalAnd
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {($ Id.VSub_DollarName '$ECLASS')}
                                )
                              right: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: __export_funcs_var
                                            span_id: 1628
                                          )
                                        prefix_op: (Id.VSub_Bang)
                                      )
                                    }
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1633)
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(echo)} {(DQ ('QA Notice: EXPORT_FUNCTIONS is called before inherit in'))} 
                          {
                            (DQ ($ Id.VSub_DollarName '$ECLASS') 
                              ('.eclass. For compatibility with <=portage-2.1.6.7,')
                            )
                          } {(DQ ('only call EXPORT_FUNCTIONS after inherit(s).'))}
                        )
                        (C {(fmt)} {(-w)} {(75)})
                        (command.WhileUntil
                          keyword: (Token id:Id.KW_While val:while span_id:1669)
                          cond: [
                            (command.Sentence
                              child: (C {(read)} {(-r)})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1675)
                            )
                          ]
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Sentence
                                  child: (C {(eqawarn)} {(DQ ($ Id.VSub_DollarName '$REPLY'))})
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:1685)
                                )
                              ]
                            )
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [1614 1635]
                )
              ]
            )
            (C {(local)} {(repo_location)})
            (C {(local)} {(location)})
            (C {(local)} {(potential_location)})
            (C {(local)} {(x)})
            (C {(local)} {(Id.Lit_VarLike 'PECLASS=') ($ Id.VSub_DollarName '$ECLASS')})
            (C {(local)} 
              {(Id.Lit_VarLike 'prev_export_funcs_var=') ($ Id.VSub_DollarName '$__export_funcs_var')}
            )
            (C {(local)} {(B_IUSE)})
            (C {(local)} {(B_REQUIRED_USE)})
            (C {(local)} {(B_DEPEND)})
            (C {(local)} {(B_RDEPEND)})
            (C {(local)} {(B_PDEPEND)})
            (C {(local)} {(B_HDEPEND)})
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:1762)
              cond: [
                (command.Sentence
                  child: 
                    (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_RBracket ']')})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:1771)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:location)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1776]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:potential_location)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1781]
                        )
                      ]
                    )
                    (C {(export)} {(Id.Lit_VarLike 'ECLASS=') (DQ ($ Id.VSub_Number '$1'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__export_funcs_var)
                          op: assign_op.Equal
                          rhs: {(__export_functions_) ($ Id.VSub_DollarName '$ECLASS_DEPTH')}
                          spids: [1795]
                        )
                      ]
                    )
                    (C {(unset)} {($ Id.VSub_DollarName '$__export_funcs_var')})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {(${ Id.VSub_Name EBUILD_PHASE)}
                                      right: {(depend)}
                                    )
                                  right: 
                                    (bool_expr.LogicalAnd
                                      left: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobNEqual
                                          left: {(${ Id.VSub_Name EBUILD_PHASE)}
                                          right: {(nofetch)}
                                        )
                                      right: 
                                        (bool_expr.LogicalAnd
                                          left: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobNEqual
                                              left: {(${ Id.VSub_Name EBUILD_PHASE)}
                                              right: {(Id.Lit_Other '*') (rm)}
                                            )
                                          right: 
                                            (bool_expr.LogicalAnd
                                              left: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobNEqual
                                                  left: {(${ Id.VSub_Name EMERGE_FROM)}
                                                  right: {(DQ (binary))}
                                                )
                                              right: 
                                                (bool_expr.Unary
                                                  op_id: Id.BoolUnary_z
                                                  child: {(${ Id.VSub_Name _IN_INSTALL_QA_CHECK)}
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {(has)} {($ Id.VSub_DollarName '$ECLASS')} 
                                              {($ Id.VSub_DollarName '$INHERITED')} {($ Id.VSub_DollarName '$__INHERITED_QA_CACHE')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1905)
                                    )
                                  ]
                                  action: [
                                    (C {(eqawarn)} 
                                      {
                                        (DQ ("QA Notice: ECLASS '") ($ Id.VSub_DollarName '$ECLASS') 
                                          ("' inherited illegally in ") ($ Id.VSub_DollarName '$CATEGORY') (/) ($ Id.VSub_DollarName '$PF') (' ') 
                                          ($ Id.VSub_DollarName '$EBUILD_PHASE')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [1893 1907]
                                )
                              ]
                            )
                          ]
                          spids: [1806 1866]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: repo_location
                      iter_words: [
                        {
                          (DQ 
                            (braced_var_sub
                              token: 
                                (Token
                                  id: Id.VSub_Name
                                  val: PORTAGE_ECLASS_LOCATIONS
                                  span_id: 1939
                                )
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:potential_location)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name repo_location) (/eclass/) 
                                        (${ Id.VSub_Number 1) (.eclass)
                                      )
                                    }
                                  spids: [1950]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_f
                                              child: {(${ Id.VSub_Name potential_location)}
                                            )
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1974)
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:location)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name potential_location))}
                                          spids: [1979]
                                        )
                                      ]
                                    )
                                    (C {(debug-print)} 
                                      {(DQ ('  eclass exists: ') (${ Id.VSub_Name location))}
                                    )
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Break val:break span_id:1997)
                                    )
                                  ]
                                  spids: [1963 1976]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {(debug-print)} 
                      {
                        (DQ ('inherit: ') ($ Id.VSub_Number '$1') (' -> ') 
                          ($ Id.VSub_DollarName '$location')
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {(${ Id.VSub_Name location)}
                            )
                        )
                        (C {(die)} 
                          {(DQ (${ Id.VSub_Number 1) ('.eclass could not be found by inherit()'))}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {(${ Id.VSub_Name _IN_INSTALL_QA_CHECK)}
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:2054)
                            )
                          ]
                          action: [
                            (C {(Id.KW_Set set)} {(-f)})
                            (C {(unset)} {(B_IUSE)} {(B_REQUIRED_USE)} {(B_DEPEND)} {(B_RDEPEND)} 
                              {(B_PDEPEND)} {(B_HDEPEND)}
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:IUSE span_id:2101)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:B_IUSE)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name IUSE))}
                                      spids: [2115]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:REQUIRED_USE span_id:2127)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:B_REQUIRED_USE)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name REQUIRED_USE))}
                                      spids: [2141]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:DEPEND span_id:2153)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:B_DEPEND)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name DEPEND))}
                                      spids: [2167]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:RDEPEND span_id:2179)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:B_RDEPEND)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name RDEPEND))}
                                      spids: [2193]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:PDEPEND span_id:2205)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:B_PDEPEND)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name PDEPEND))}
                                      spids: [2219]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:HDEPEND span_id:2231)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:B_HDEPEND)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name HDEPEND))}
                                      spids: [2245]
                                    )
                                  ]
                                )
                              ]
                            )
                            (C {(unset)} {(IUSE)} {(REQUIRED_USE)} {(DEPEND)} {(RDEPEND)} {(PDEPEND)} 
                              {(HDEPEND)}
                            )
                            (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (f)})
                          ]
                          spids: [2043 2056]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(__qa_source)} {(DQ ($ Id.VSub_DollarName '$location'))})
                        (C {(die)} 
                          {
                            (DQ ('died sourcing ') ($ Id.VSub_DollarName '$location') (' in inherit()'))
                          }
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {(${ Id.VSub_Name _IN_INSTALL_QA_CHECK)}
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:2312)
                            )
                          ]
                          action: [
                            (C {(Id.KW_Set set)} {(-f)})
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:IUSE span_id:2339)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:E_IUSE)
                                      op: assign_op.PlusEqual
                                      rhs: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: (Token id:Id.VSub_Name val:E_IUSE span_id:2356)
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VTest_ColonPlus
                                                  arg_word: {(' ')}
                                                )
                                            ) (${ Id.VSub_Name IUSE)
                                          )
                                        }
                                      spids: [2353]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:REQUIRED_USE span_id:2370)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:E_REQUIRED_USE)
                                      op: assign_op.PlusEqual
                                      rhs: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: E_REQUIRED_USE
                                                  span_id: 2387
                                                )
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VTest_ColonPlus
                                                  arg_word: {(' ')}
                                                )
                                            ) (${ Id.VSub_Name REQUIRED_USE)
                                          )
                                        }
                                      spids: [2384]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:DEPEND span_id:2401)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:E_DEPEND)
                                      op: assign_op.PlusEqual
                                      rhs: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: E_DEPEND
                                                  span_id: 2418
                                                )
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VTest_ColonPlus
                                                  arg_word: {(' ')}
                                                )
                                            ) (${ Id.VSub_Name DEPEND)
                                          )
                                        }
                                      spids: [2415]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:RDEPEND span_id:2432)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:E_RDEPEND)
                                      op: assign_op.PlusEqual
                                      rhs: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: E_RDEPEND
                                                  span_id: 2449
                                                )
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VTest_ColonPlus
                                                  arg_word: {(' ')}
                                                )
                                            ) (${ Id.VSub_Name RDEPEND)
                                          )
                                        }
                                      spids: [2446]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:PDEPEND span_id:2463)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:E_PDEPEND)
                                      op: assign_op.PlusEqual
                                      rhs: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: E_PDEPEND
                                                  span_id: 2480
                                                )
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VTest_ColonPlus
                                                  arg_word: {(' ')}
                                                )
                                            ) (${ Id.VSub_Name PDEPEND)
                                          )
                                        }
                                      spids: [2477]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:HDEPEND span_id:2494)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:E_HDEPEND)
                                      op: assign_op.PlusEqual
                                      rhs: 
                                        {
                                          (DQ 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: E_HDEPEND
                                                  span_id: 2511
                                                )
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VTest_ColonPlus
                                                  arg_word: {(' ')}
                                                )
                                            ) (${ Id.VSub_Name HDEPEND)
                                          )
                                        }
                                      spids: [2508]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_IUSE span_id:2526)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:IUSE)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name B_IUSE))}
                                      spids: [2540]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_IUSE span_id:2552)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (C {(unset)} {(IUSE)})
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: B_REQUIRED_USE
                                            span_id: 2577
                                          )
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:REQUIRED_USE)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name B_REQUIRED_USE))}
                                      spids: [2591]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: 
                                          (Token
                                            id: Id.VSub_Name
                                            val: B_REQUIRED_USE
                                            span_id: 2603
                                          )
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (C {(unset)} {(REQUIRED_USE)})
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_DEPEND span_id:2627)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:DEPEND)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name B_DEPEND))}
                                      spids: [2641]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_DEPEND span_id:2653)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (C {(unset)} {(DEPEND)})
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_RDEPEND span_id:2677)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:RDEPEND)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name B_RDEPEND))}
                                      spids: [2691]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_RDEPEND span_id:2703)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (C {(unset)} {(RDEPEND)})
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_PDEPEND span_id:2727)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:PDEPEND)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name B_PDEPEND))}
                                      spids: [2741]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_PDEPEND span_id:2753)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (C {(unset)} {(PDEPEND)})
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_HDEPEND span_id:2777)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:HDEPEND)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name B_HDEPEND))}
                                      spids: [2791]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(Id.Lit_LBracket '[')} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:B_HDEPEND span_id:2803)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_Plus
                                            arg_word: {(set)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                                )
                                (C {(unset)} {(HDEPEND)})
                              ]
                            )
                            (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (f)})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_n
                                              child: 
                                                {
                                                  (braced_var_sub
                                                    token: 
                                                      (Token
                                                        id: Id.VSub_Name
                                                        val: __export_funcs_var
                                                        span_id: 2842
                                                      )
                                                    prefix_op: (Id.VSub_Bang)
                                                  )
                                                }
                                            )
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:2847)
                                    )
                                  ]
                                  action: [
                                    (command.ForEach
                                      iter_name: x
                                      iter_words: [
                                        {
                                          (braced_var_sub
                                            token: 
                                              (Token
                                                id: Id.VSub_Name
                                                val: __export_funcs_var
                                                span_id: 2860
                                              )
                                            prefix_op: (Id.VSub_Bang)
                                          )
                                        }
                                      ]
                                      do_arg_iter: F
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (C {(debug-print)} 
                                              {
                                                (DQ ('EXPORT_FUNCTIONS: ') ($ Id.VSub_DollarName '$x') 
                                                  (' -> ') (${ Id.VSub_Name ECLASS) (_) ($ Id.VSub_DollarName '$x')
                                                )
                                              }
                                            )
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (command.Simple
                                                  words: [
                                                    {(declare)}
                                                    {(-F)}
                                                    {
                                                      (DQ (${ Id.VSub_Name ECLASS) (_) 
                                                        ($ Id.VSub_DollarName '$x')
                                                      )
                                                    }
                                                  ]
                                                  redirects: [
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_Great
                                                          val: '>'
                                                          span_id: 2894
                                                        )
                                                      fd: -1
                                                      arg_word: {(/dev/null)}
                                                    )
                                                  ]
                                                )
                                                (C {(die)} 
                                                  {
                                                    (DQ ('EXPORT_FUNCTIONS: ') 
                                                      (${ Id.VSub_Name ECLASS) (_) ($ Id.VSub_DollarName '$x') (' is not defined')
                                                    )
                                                  }
                                                )
                                              ]
                                            )
                                            (command.Simple
                                              words: [
                                                {(eval)}
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$x') ('() { ') 
                                                    (${ Id.VSub_Name ECLASS) (_) ($ Id.VSub_DollarName '$x') (' ') 
                                                    (word_part.EscapedLiteral
                                                      token: 
                                                        (Token
                                                          id: Id.Lit_EscapedChar
                                                          val: '\\"'
                                                          span_id: 2925
                                                        )
                                                    ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:2926)) ('@') 
                                                    (word_part.EscapedLiteral
                                                      token: 
                                                        (Token
                                                          id: Id.Lit_EscapedChar
                                                          val: '\\"'
                                                          span_id: 2928
                                                        )
                                                    ) (' ; }')
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Great val:'>' span_id:2932)
                                                  fd: -1
                                                  arg_word: {(/dev/null)}
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                    )
                                  ]
                                  spids: [2834 2849]
                                )
                              ]
                            )
                            (C {(unset)} {($ Id.VSub_DollarName '$__export_funcs_var')})
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(has)} {($ Id.VSub_Number '$1')} 
                                  {($ Id.VSub_DollarName '$INHERITED')}
                                )
                                (C {(export)} 
                                  {(Id.Lit_VarLike 'INHERITED=') 
                                    (DQ ($ Id.VSub_DollarName '$INHERITED') (' ') 
                                      ($ Id.VSub_Number '$1')
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [2301 2314]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                )
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Arith_DMinus
                  child: (sh_lhs_expr.Name name:ECLASS_DEPTH)
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Great
                              left: 
                                (arith_expr.VarRef
                                  token: (Token id:Id.Lit_ArithVarLike val:ECLASS_DEPTH span_id:2991)
                                )
                              right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3000)
                    )
                  ]
                  action: [
                    (C {(export)} {(Id.Lit_VarLike 'ECLASS=') ($ Id.VSub_DollarName '$PECLASS')})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__export_funcs_var)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$prev_export_funcs_var')}
                          spids: [3011]
                        )
                      ]
                    )
                  ]
                  spids: [2987 3002]
                )
              ]
              else_action: [(C {(unset)} {(ECLASS)} {(__export_funcs_var)})]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:3028)
              arg_word: {(0)}
            )
          ]
        )
    )
    (command.ShFunction
      name: EXPORT_FUNCTIONS
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$ECLASS'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3065)
                    )
                  ]
                  action: [(C {(die)} {(DQ ('EXPORT_FUNCTIONS without a defined ECLASS'))})]
                  spids: [3054 3067]
                )
              ]
            )
            (C {(eval)} 
              {($ Id.VSub_DollarName '$__export_funcs_var') (Id.Lit_Other '+') (Id.Lit_Equals '=') 
                (word_part.EscapedLiteral
                  token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3085)
                )
              } 
              {($ Id.VSub_Star '$*') 
                (word_part.EscapedLiteral
                  token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3088)
                )
              }
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PORTAGE_BASHRCS_SOURCED)
          op: assign_op.Equal
          rhs: {(0)}
          spids: [3093]
        )
      ]
    )
    (command.ShFunction
      name: __source_all_bashrcs
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobEqual
                      left: {($ Id.VSub_DollarName '$PORTAGE_BASHRCS_SOURCED')}
                      right: {(1)}
                    )
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:3149)
                  arg_word: {(0)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PORTAGE_BASHRCS_SOURCED)
                  op: assign_op.Equal
                  rhs: {(1)}
                  spids: [3154]
                )
              ]
            )
            (C {(local)} {(x)})
            (C {(local)} {(Id.Lit_VarLike 'OCC=') (DQ (${ Id.VSub_Name CC))} 
              {(Id.Lit_VarLike 'OCXX=') (DQ (${ Id.VSub_Name CXX))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                              right: {(depend)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3194)
                    )
                  ]
                  action: [
                    (C {(save_IFS)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (single_quoted
                                left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:3207)
                                tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:3208)]
                              )
                            }
                          spids: [3206]
                        )
                      ]
                    )
                    (C {(local)} 
                      {(Id.Lit_VarLike 'bashenv_files=') 
                        (sh_array_literal
                          left: (Token id:Id.Op_LParen val:'(' span_id:3215)
                          words: [{($ Id.VSub_DollarName '$PORTAGE_BASHRC_FILES')}]
                        )
                      }
                    )
                    (C {(restore_IFS)})
                    (command.ForEach
                      iter_name: x
                      iter_words: [
                        {
                          (DQ 
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:bashenv_files span_id:3231)
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [(C {(__try_source)} {(DQ (${ Id.VSub_Name x))})]
                        )
                    )
                  ]
                  spids: [3182 3196]
                )
              ]
            )
            (C {(__try_source)} {(--no-qa)} {(DQ (${ Id.VSub_Name PORTAGE_BASHRC))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                              right: {(depend)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3291)
                    )
                  ]
                  action: [
                    (C {(__source_env_files)} {(--no-qa)} {(DQ (${ Id.VSub_Name PM_EBUILD_HOOK_DIR))})
                  ]
                  spids: [3279 3293]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} {(DQ (${ Id.VSub_Name OCC))} 
                  {(Id.Lit_RBracket ']')}
                )
                (C {(export)} {(Id.Lit_VarLike 'CC=') (DQ (${ Id.VSub_Name OCC))})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} {(DQ (${ Id.VSub_Name OCXX))} 
                  {(Id.Lit_RBracket ']')}
                )
                (C {(export)} {(Id.Lit_VarLike 'CXX=') (DQ (${ Id.VSub_Name OCXX))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: __source_env_files
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'argument=') 
                (sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:3393))
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_Number '$1')}
                              right: {(--no-qa)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3408)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:argument)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:3414)
                                words: [{(--no-qa)}]
                              )
                            }
                          spids: [3413]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                  spids: [3397 3410]
                )
              ]
            )
            (command.ForEach
              iter_name: x
              iter_words: [
                (word.BracedTree
                  parts: [
                    (DQ (${ Id.VSub_Number 1))
                    (/)
                    (${ Id.VSub_Name CATEGORY)
                    (/)
                    (word_part.BracedTuple
                      words: [
                        {(${ Id.VSub_Name PN)}
                        {(${ Id.VSub_Name PN) (Id.Lit_Other ':') 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:SLOT span_id:3453)
                            suffix_op: 
                              (suffix_op.Unary
                                op_id: Id.VOp1_Percent
                                arg_word: {(Id.Lit_Slash /) ('*')}
                              )
                          )
                        }
                        {(${ Id.VSub_Name P)}
                        {(${ Id.VSub_Name PF)}
                      ]
                    )
                  ]
                )
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(__try_source)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:argument span_id:3476)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        )
                      } {(DQ (${ Id.VSub_Name x))}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: __try_source
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'qa=') (true)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_Number '$1')}
                              right: {(--no-qa)}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3537)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:qa)
                          op: assign_op.Equal
                          rhs: {(false)}
                          spids: [3542]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                  spids: [3526 3539]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalAnd
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_r
                                  child: {($ Id.VSub_Number '$1')}
                                )
                              right: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_f
                                  child: {($ Id.VSub_Number '$1')}
                                )
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3567)
                    )
                  ]
                  action: [
                    (C {(local)} {(Id.Lit_VarLike 'debug_on=') (false)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(DQ ($ Id.VSub_DollarName '$PORTAGE_DEBUG'))}
                                          right: {(DQ (1))}
                                        )
                                    )
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: (Token id:Id.VSub_Hyphen val:- span_id:3600)
                                                  suffix_op: 
                                                    (suffix_op.PatSub
                                                      pat: {(x)}
                                                      replace: (word.Empty)
                                                      replace_mode: Id.Undefined_Tok
                                                    )
                                                )
                                              )
                                            }
                                          right: {(DQ ($ Id.VSub_Hyphen '$-'))}
                                        )
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:3614)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:debug_on)
                                  op: assign_op.Equal
                                  rhs: {(true)}
                                  spids: [3619]
                                )
                              ]
                            )
                          ]
                          spids: [3578 3616]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [(C {($ Id.VSub_DollarName '$debug_on')}) (C {(Id.KW_Set set)} {(-x)})]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: (bool_expr.WordTest w:{(${ Id.VSub_Name qa)})
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:3656)
                            )
                          ]
                          action: [(C {(source)} {(DQ (${ Id.VSub_Number 1))})]
                          spids: [3647 3658]
                        )
                      ]
                      else_action: [(C {(__qa_source)} {(DQ (${ Id.VSub_Number 1))})]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {($ Id.VSub_DollarName '$debug_on')})
                        (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (x)})
                      ]
                    )
                  ]
                  spids: [3552 3569]
                )
              ]
            )
          ]
        )
    )
    (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (DQ (1))})
    (C {(export)} {(Id.Lit_VarLike 'S=') (${ Id.VSub_Name WORKDIR) (/) (${ Id.VSub_Name P)})
    (C {(shopt)} {(-u)} {(extglob)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {(${ Id.VSub_Name EBUILD_PHASE)}
                      right: {(depend)}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:3752)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:QA_INTERCEPTORS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ('awk bash cc egrep equery fgrep g++\n') 
                        ('\t\tgawk gcc grep javac java-config nawk perl\n') ('\t\tpkg-config python python-config sed')
                      )
                    }
                  spids: [3757]
                )
              ]
            )
          ]
          spids: [3738 3754]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobDEqual
                      left: {(${ Id.VSub_Name EBUILD_PHASE)}
                      right: {(clean) (Id.Lit_Other '*')}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:3779)
            )
          ]
          action: [(C {(unset)} {(QA_INTERCEPTORS)})]
          spids: [3764 3781]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:QA_INTERCEPTORS)
              op: assign_op.Equal
              rhs: {(DQ ('autoconf automake aclocal libtoolize'))}
              spids: [3791]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_n
                      child: {(${ Id.VSub_Name QA_INTERCEPTORS)}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:3813)
            )
          ]
          action: [
            (command.ForEach
              iter_name: BIN
              iter_words: [{(${ Id.VSub_Name QA_INTERCEPTORS)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:BIN_PATH)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3833)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(type)} {(-Pf)} {(${ Id.VSub_Name BIN)})]
                                  )
                              )
                            }
                          spids: [3832]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_QMark '$?'))} 
                                  {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (0))} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:3860)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:BODY)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ('echo ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3868)
                                        ) ('*** missing command: ') (${ Id.VSub_Name BIN) 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3873)
                                        ) (' >&2; return 127')
                                      )
                                    }
                                  spids: [3865]
                                )
                              ]
                            )
                          ]
                          spids: [3844 3862]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:BODY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name BIN_PATH) (' ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3887)
                                    ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3888)) ('@') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3890)
                                    ) ('; return ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3892)) 
                                    ('?')
                                  )
                                }
                              spids: [3881]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(${ Id.VSub_Name EBUILD_PHASE)}
                                      right: {(depend)}
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:3914)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FUNC_SRC)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name BIN) ('() {\n') ('\t\t\t\tif [ ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3926)
                                        ) ('ECLASS_DEPTH -gt 0 ]; then\n') ('\t\t\t\t\teqawarn ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3929)
                                        ) ("QA Notice: '") (${ Id.VSub_Name BIN) ("' called in global scope: eclass ") 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3935)
                                        ) ('{ECLASS}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:3937)) 
                                        ('\n') ('\t\t\t\telse\n') ('\t\t\t\t\teqawarn ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3941)
                                        ) ("QA Notice: '") (${ Id.VSub_Name BIN) ("' called in global scope: ") 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3947)
                                        ) ('{CATEGORY}/') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3949)) 
                                        ('{PF}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:3951)) ('\n') 
                                        ('\t\t\t\tfi\n') ('\t\t\t') (${ Id.VSub_Name BODY) ('\n') ('\t\t\t}')
                                      )
                                    }
                                  spids: [3919]
                                )
                              ]
                            )
                          ]
                          spids: [3900 3916]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(has)} {(${ Id.VSub_Name BIN)} {(autoconf)} {(automake)} {(aclocal)} 
                                  {(libtoolize)}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:3979)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FUNC_SRC)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name BIN) ('() {\n') ('\t\t\t\tif ! has ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3991)
                                        ) ('{FUNCNAME[1]} eautoreconf eaclocal _elibtoolize ') 
                                        (word_part.EscapedLiteral
                                          token: 
                                            (Token
                                              id: Id.Lit_EscapedChar
                                              val: '\\\\'
                                              span_id: 3993
                                            )
                                        ) ('\n') ('\t\t\t\t\teautoheader eautoconf eautomake autotools_run_tool ') 
                                        (word_part.EscapedLiteral
                                          token: 
                                            (Token
                                              id: Id.Lit_EscapedChar
                                              val: '\\\\'
                                              span_id: 3996
                                            )
                                        ) ('\n') ('\t\t\t\t\tautotools_check_macro autotools_get_subdirs ') 
                                        (word_part.EscapedLiteral
                                          token: 
                                            (Token
                                              id: Id.Lit_EscapedChar
                                              val: '\\\\'
                                              span_id: 3999
                                            )
                                        ) ('\n') ('\t\t\t\t\tautotools_get_auxdir ; then\n') ('\t\t\t\t\teqawarn ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:4003)
                                        ) ("QA Notice: '") (${ Id.VSub_Name BIN) ("' called by ") 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4009)
                                        ) ('{FUNCNAME[1]}: ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4011)
                                        ) ('{CATEGORY}/') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:4013)) 
                                        ('{PF}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:4015)) ('\n') 
                                        ('\t\t\t\t\teqawarn ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:4018)) 
                                        ("Use autotools.eclass instead of calling '") (${ Id.VSub_Name BIN) ("' directly.") 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:4024)
                                        ) ('\n') ('\t\t\t\tfi\n') ('\t\t\t') (${ Id.VSub_Name BODY) ('\n') ('\t\t\t}')
                                      )
                                    }
                                  spids: [3984]
                                )
                              ]
                            )
                          ]
                          spids: [3963 3981]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:FUNC_SRC)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name BIN) ('() {\n') ('\t\t\t\teqawarn ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:4046)
                                    ) ("QA Notice: '") (${ Id.VSub_Name BIN) ("' called by ") 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4052)
                                    ) ('{FUNCNAME[1]}: ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4054)
                                    ) ('{CATEGORY}/') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:4056)) 
                                    ('{PF}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:4058)) ('\n') ('\t\t\t') 
                                    (${ Id.VSub_Name BODY) ('\n') ('\t\t\t}')
                                  )
                                }
                              spids: [4039]
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(eval)} {(DQ ($ Id.VSub_DollarName '$FUNC_SRC'))})
                        (command.Simple
                          words: [
                            {(echo)}
                            {(DQ ('error creating QA interceptor ') (${ Id.VSub_Name BIN))}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:4089)
                              fd: -1
                              arg_word: {(2)}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(unset)} {(BIN_PATH)} {(BIN)} {(BODY)} {(FUNC_SRC)})
          ]
          spids: [3801 3815]
        )
      ]
    )
    (C {(export)} 
      {(Id.Lit_VarLike 'EBUILD_MASTER_PID=') 
        (braced_var_sub
          token: (Token id:Id.VSub_Name val:BASHPID span_id:4116)
          suffix_op: 
            (suffix_op.Unary
              op_id: Id.VTest_ColonHyphen
              arg_word: 
                {
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4118)
                    command_list: (command.CommandList children:[(C {(__bashpid)})])
                  )
                }
            )
        )
      }
    )
    (C {(trap)} {(SQ (Token id:Id.Lit_Chars val:'exit 1' span_id:4126))} {(SIGTERM)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Id.Op_DAmp Id.Op_DAmp]
                  children: [
                    (command.Pipeline
                      children: [
                        (C {(has)} {(DQ ($ Id.VSub_DollarName '$EBUILD_PHASE'))} {(clean)} {(cleanrm)} 
                          {(depend)}
                        )
                      ]
                      negated: T
                    )
                    (command.Pipeline
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalAnd
                              left: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobEqual
                                  left: {($ Id.VSub_DollarName '$EMERGE_FROM')}
                                  right: {(ebuild)}
                                )
                              right: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobEqual
                                  left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                                  right: {(setup)}
                                )
                            )
                        )
                      ]
                      negated: T
                    )
                    (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name T)) (/environment)} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:4189)
            )
          ]
          action: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(__preprocess_ebuild_env)})
                (C {(die)} {(DQ ('error processing environment'))})
              ]
            )
            (command.ForEach
              iter_name: x
              iter_words: [{(SANDBOX_DENY)} {(SANDBOX_READ)} {(SANDBOX_PREDICT)} {(SANDBOX_WRITE)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(export)} 
                      {(PORTAGE_) (${ Id.VSub_Name x) (Id.Lit_Equals '=') 
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:x span_id:4256)
                            prefix_op: (Id.VSub_Bang)
                          )
                        )
                      }
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PORTAGE_SANDBOX_ON)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name SANDBOX_ON)}
                  spids: [4264]
                )
              ]
            )
            (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (1)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(source)} {(DQ (${ Id.VSub_Name T)) (/environment)})
                (C {(die)} {(DQ ('error sourcing environment'))})
              ]
            )
            (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (0)})
            (command.ForEach
              iter_name: x
              iter_words: [{(SANDBOX_DENY)} {(SANDBOX_PREDICT)} {(SANDBOX_READ)} {(SANDBOX_WRITE)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:y)
                          op: assign_op.Equal
                          rhs: {(DQ (PORTAGE_) (${ Id.VSub_Name x))}
                          spids: [4337]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-z)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:x span_id:4355)
                                        prefix_op: (Id.VSub_Bang)
                                      )
                                    )
                                  } {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4361)
                            )
                          ]
                          action: [
                            (C {(export)} 
                              {(${ Id.VSub_Name x) (Id.Lit_Equals '=') 
                                (DQ 
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:y span_id:4375)
                                    prefix_op: (Id.VSub_Bang)
                                  )
                                )
                              }
                            )
                          ]
                          spids: [4346 4363]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {(Id.Lit_LBracket '[')} {(-n)} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:y span_id:4389)
                                            prefix_op: (Id.VSub_Bang)
                                          )
                                        )
                                      } {(Id.Lit_RBracket ']')}
                                    )
                                    (C {(Id.Lit_LBracket '[')} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:y span_id:4402)
                                            prefix_op: (Id.VSub_Bang)
                                          )
                                        )
                                      } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:x span_id:4412)
                                            prefix_op: (Id.VSub_Bang)
                                          )
                                        )
                                      } {(Id.Lit_RBracket ']')}
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4418)
                            )
                          ]
                          action: [
                            (C {(export)} 
                              {(${ Id.VSub_Name x) (Id.Lit_Equals '=') 
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4434)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.Pipeline
                                            children: [
                                              (C {(printf)} 
                                                {
                                                  (DQ 
                                                    (braced_var_sub
                                                      token: 
                                                        (Token
                                                          id: Id.VSub_Name
                                                          val: y
                                                          span_id: 4440
                                                        )
                                                      prefix_op: (Id.VSub_Bang)
                                                    ) (':') (braced_var_sub token:(Token id:Id.VSub_Name val:x span_id:4445) prefix_op:(Id.VSub_Bang))
                                                  )
                                                }
                                              )
                                              (C {(tr)} {(DQ (':'))} {(DQ (Id.Lit_Other '\\') (0))})
                                              (C {(sort)} {(-z)} {(-u)})
                                              (C {(tr)} {(DQ (Id.Lit_Other '\\') (0))} {(DQ (':'))})
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                          ]
                          spids: [4380 4420]
                        )
                      ]
                    )
                    (C {(export)} 
                      {(${ Id.VSub_Name x) (Id.Lit_Equals '=') 
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:x span_id:4500)
                            prefix_op: (Id.VSub_Bang)
                            suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{(':')})
                          )
                        )
                      }
                    )
                    (C {(unset)} {(PORTAGE_) (${ Id.VSub_Name x)})
                  ]
                )
            )
            (C {(unset)} {(x)} {(y)})
            (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (${ Id.VSub_Name PORTAGE_SANDBOX_ON)})
            (C {(unset)} {(PORTAGE_SANDBOX_ON)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName '$EAPI')})
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:EAPI)
                      op: assign_op.Equal
                      rhs: {(0)}
                      spids: [4548]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [4132 4191]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(___eapi_enables_globstar)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:4557)
            )
          ]
          action: [(C {(shopt)} {(-s)} {(globstar)})]
          spids: [4554 4559]
        )
      ]
    )
    (C {(eval)} {(DQ ('PORTAGE_ECLASS_LOCATIONS=(') (${ Id.VSub_Name PORTAGE_ECLASS_LOCATIONS) (')'))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {(has)} {(DQ ($ Id.VSub_DollarName '$EBUILD_PHASE'))} {(clean)} {(cleanrm)})
                  ]
                  negated: T
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:4605)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobEqual
                                      left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                                      right: {(setup)}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobEqual
                                      left: {($ Id.VSub_DollarName '$EMERGE_FROM')}
                                      right: {(ebuild)}
                                    )
                                )
                            )
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalOr
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobEqual
                                      left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                                      right: {(depend)}
                                    )
                                  right: 
                                    (bool_expr.LogicalOr
                                      left: 
                                        (bool_expr.LogicalNot
                                          child: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_f
                                              child: {($ Id.VSub_DollarName '$T') (/environment)}
                                            )
                                        )
                                      right: 
                                        (bool_expr.LogicalOr
                                          left: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_f
                                              child: 
                                                {($ Id.VSub_DollarName '$PORTAGE_BUILDDIR') 
                                                  (/.ebuild_changed)
                                                }
                                            )
                                          right: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: {(DQ (' ') (${ Id.VSub_Name FEATURES) (' '))}
                                              right: 
                                                {(Id.Lit_Other '*') (DQ (' noauto ')) 
                                                  (Id.Lit_Other '*')
                                                }
                                            )
                                        )
                                    )
                                )
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4682)
                    )
                  ]
                  action: [
                    (C {(__source_all_bashrcs)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__INHERITED_QA_CACHE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$INHERITED')}
                          spids: [4715]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(___eapi_enables_failglob_in_global_scope)})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4735)
                            )
                          ]
                          action: [(C {(shopt)} {(-s)} {(failglob)})]
                          spids: [4732 4737]
                        )
                      ]
                    )
                    (C {(unset)} {(EAPI)} {(DEPEND)} {(RDEPEND)} {(PDEPEND)} {(HDEPEND)} {(INHERITED)} 
                      {(IUSE)} {(REQUIRED_USE)} {(ECLASS)} {(E_IUSE)} {(E_REQUIRED_USE)} {(E_DEPEND)} {(E_RDEPEND)} {(E_PDEPEND)} 
                      {(E_HDEPEND)} {(PROVIDES_EXCLUDE)} {(REQUIRES_EXCLUDE)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.LogicalOr
                                      left: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobNEqual
                                          left: {($ Id.VSub_DollarName '$PORTAGE_DEBUG')}
                                          right: {(1)}
                                        )
                                      right: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobNEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: (Token id:Id.VSub_Hyphen val:- span_id:4822)
                                                suffix_op: 
                                                  (suffix_op.PatSub
                                                    pat: {(x)}
                                                    replace: {}
                                                    replace_mode: Id.Undefined_Tok
                                                  )
                                              )
                                            }
                                          right: {($ Id.VSub_Hyphen '$-')}
                                        )
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4834)
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(source)} {(DQ ($ Id.VSub_DollarName '$EBUILD'))})
                                (C {(die)} {(DQ ('error sourcing ebuild'))})
                              ]
                            )
                          ]
                          spids: [4809 4836]
                        )
                      ]
                      else_action: [
                        (C {(Id.KW_Set set)} {(-x)})
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {(source)} {(DQ ($ Id.VSub_DollarName '$EBUILD'))})
                            (C {(die)} {(DQ ('error sourcing ebuild'))})
                          ]
                        )
                        (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (x)})
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(___eapi_enables_failglob_in_global_scope)})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4890)
                            )
                          ]
                          action: [(C {(shopt)} {(-u)} {(failglob)})]
                          spids: [4887 4892]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {(DQ (${ Id.VSub_Name EBUILD_PHASE))}
                                      right: {(DQ (depend))}
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4924)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:RESTRICT)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name PORTAGE_RESTRICT)}
                                  spids: [4929]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_e
                                      child: 
                                        {($ Id.VSub_DollarName '$PORTAGE_BUILDDIR') 
                                          (/.ebuild_changed)
                                        }
                                    )
                                )
                                (C {(rm)} 
                                  {(DQ ($ Id.VSub_DollarName '$PORTAGE_BUILDDIR') (/.ebuild_changed))}
                                )
                              ]
                            )
                          ]
                          spids: [4906 4926]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(Id.Lit_LBracket '[')} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:EAPI span_id:4964)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{(set)})
                              )
                            )
                          } {(Id.Lit_Equals '=')} {(Id.KW_Set set)} {(Id.Lit_RBracket ']')}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:EAPI)
                              op: assign_op.Equal
                              rhs: {(0)}
                              spids: [4978]
                            )
                          ]
                        )
                      ]
                    )
                    (C {(export)} {(EAPI)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {(___eapi_has_RDEPEND_DEPEND_fallback)})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4996)
                            )
                          ]
                          action: [
                            (C {(export)} 
                              {(Id.Lit_VarLike 'RDEPEND=') 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:RDEPEND span_id:5005)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_Hyphen
                                      arg_word: {(${ Id.VSub_Name DEPEND)}
                                    )
                                )
                              }
                            )
                            (C {(debug-print)} 
                              {(DQ ('RDEPEND: not set... Setting to: ') (${ Id.VSub_Name DEPEND))}
                            )
                          ]
                          spids: [4993 4998]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IUSE)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:IUSE span_id:5034)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_ColonPlus
                                      arg_word: {(' ')}
                                    )
                                ) (${ Id.VSub_Name E_IUSE)
                              )
                            }
                          spids: [5031]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DEPEND)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:DEPEND span_id:5047)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_ColonPlus
                                      arg_word: {(' ')}
                                    )
                                ) (${ Id.VSub_Name E_DEPEND)
                              )
                            }
                          spids: [5044]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RDEPEND)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:RDEPEND span_id:5060)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_ColonPlus
                                      arg_word: {(' ')}
                                    )
                                ) (${ Id.VSub_Name E_RDEPEND)
                              )
                            }
                          spids: [5057]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PDEPEND)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:PDEPEND span_id:5073)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_ColonPlus
                                      arg_word: {(' ')}
                                    )
                                ) (${ Id.VSub_Name E_PDEPEND)
                              )
                            }
                          spids: [5070]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:HDEPEND)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:HDEPEND span_id:5086)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_ColonPlus
                                      arg_word: {(' ')}
                                    )
                                ) (${ Id.VSub_Name E_HDEPEND)
                              )
                            }
                          spids: [5083]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:REQUIRED_USE)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:REQUIRED_USE span_id:5099)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_ColonPlus
                                      arg_word: {(' ')}
                                    )
                                ) (${ Id.VSub_Name E_REQUIRED_USE)
                              )
                            }
                          spids: [5096]
                        )
                      ]
                    )
                    (C {(unset)} {(ECLASS)} {(E_IUSE)} {(E_REQUIRED_USE)} {(E_DEPEND)} {(E_RDEPEND)} 
                      {(E_PDEPEND)} {(E_HDEPEND)} {(__INHERITED_QA_CACHE)}
                    )
                    (command.Case
                      to_match: {(${ Id.VSub_Name EAPI)}
                      arms: [
                        (case_arm
                          pat_list: [{(0)} {(1)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_valid_phases)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ('src_compile pkg_config pkg_info src_install\n') 
                                        (
'\t\t\t\t\tpkg_nofetch pkg_postinst pkg_postrm pkg_preinst pkg_prerm\n'
                                        ) ('\t\t\t\t\tpkg_setup src_test src_unpack')
                                      )
                                    }
                                  spids: [5152]
                                )
                              ]
                            )
                          ]
                          spids: [5146 5149 5160 -1]
                        )
                        (case_arm
                          pat_list: [{(2)} {(3)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_valid_phases)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ('src_compile pkg_config src_configure pkg_info\n') 
                                        (
'\t\t\t\t\tsrc_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst\n'
                                        ) ('\t\t\t\t\tsrc_prepare pkg_prerm pkg_setup src_test src_unpack')
                                      )
                                    }
                                  spids: [5169]
                                )
                              ]
                            )
                          ]
                          spids: [5163 5166 5177 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_valid_phases)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ('src_compile pkg_config src_configure pkg_info\n') 
                                        (
'\t\t\t\t\tsrc_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst\n'
                                        ) ('\t\t\t\t\tsrc_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack')
                                      )
                                    }
                                  spids: [5184]
                                )
                              ]
                            )
                          ]
                          spids: [5180 5181 5192 -1]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DEFINED_PHASES)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [5199]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: _f
                      iter_words: [{($ Id.VSub_DollarName '$_valid_phases')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.Simple
                                          words: [{(declare)} {(-F)} {($ Id.VSub_DollarName '$_f')}]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:5223)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:5226)
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_f)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (braced_var_sub
                                                token: (Token id:Id.VSub_Name val:_f span_id:5233)
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_Pound
                                                    arg_word: {(pkg_)}
                                                  )
                                              )
                                            }
                                          spids: [5231]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:DEFINED_PHASES)
                                          op: assign_op.PlusEqual
                                          rhs: 
                                            {
                                              (DQ (' ') 
                                                (braced_var_sub
                                                  token: (Token id:Id.VSub_Name val:_f span_id:5243)
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op_id: Id.VOp1_Pound
                                                      arg_word: {(src_)}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [5239]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5215 5228]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName '$DEFINED_PHASES')}
                            )
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:DEFINED_PHASES)
                              op: assign_op.Equal
                              rhs: {(-)}
                              spids: [5266]
                            )
                          ]
                        )
                      ]
                    )
                    (C {(unset)} {(_f)} {(_valid_phases)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                                      right: {(depend)}
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:5291)
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(has)} {(distcc)} {($ Id.VSub_DollarName '$FEATURES')})
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:5305)
                                    )
                                  ]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_n
                                              child: {($ Id.VSub_DollarName '$DISTCC_LOG')}
                                            )
                                        )
                                        (C {(addwrite)} 
                                          {
                                            (DQ 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: DISTCC_LOG
                                                    span_id: 5324
                                                  )
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_Percent
                                                    arg_word: {(Id.Lit_Slash /) ('*')}
                                                  )
                                              )
                                            )
                                          }
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5297 5307]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(has)} {(ccache)} {($ Id.VSub_DollarName '$FEATURES')})
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:5344)
                                    )
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (command.DBracket
                                                  expr: 
                                                    (bool_expr.Unary
                                                      op_id: Id.BoolUnary_n
                                                      child: {($ Id.VSub_DollarName '$CCACHE_DIR')}
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:5360)
                                            )
                                          ]
                                          action: [
                                            (C {(addread)} {(DQ ($ Id.VSub_DollarName '$CCACHE_DIR'))})
                                            (C {(addwrite)} {(DQ ($ Id.VSub_DollarName '$CCACHE_DIR'))})
                                          ]
                                          spids: [5350 5362]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_n
                                              child: {($ Id.VSub_DollarName '$CCACHE_SIZE')}
                                            )
                                        )
                                        (command.Simple
                                          words: [
                                            {(ccache)}
                                            {(-M)}
                                            {($ Id.VSub_DollarName '$CCACHE_SIZE')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_AndGreat val:'&>' span_id:5399)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5336 5346]
                                )
                              ]
                            )
                          ]
                          spids: [5279 5293]
                        )
                      ]
                    )
                  ]
                  spids: [4610 4684]
                )
              ]
            )
          ]
          spids: [4591 4607]
        )
      ]
    )
    (command.ForEach
      iter_name: x
      iter_words: [{(${ Id.VSub_Name USE_EXPAND)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(Id.Lit_LBracket '[')} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:x span_id:5438)
                        prefix_op: (Id.VSub_Bang)
                      )
                    )
                  } {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ ('*'))} {(Id.Lit_RBracket ']')}
                )
                (C {(unset)} {(${ Id.VSub_Name x)})
              ]
            )
          ]
        )
    )
    (C {(unset)} {(x)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(has)} {(nostrip)} {(${ Id.VSub_Name FEATURES)} {(${ Id.VSub_Name RESTRICT)})
                (C {(has)} {(strip)} {(${ Id.VSub_Name RESTRICT)})
              ]
            )
          ]
          action: [(C {(export)} {(Id.Lit_VarLike 'DEBUGBUILD=') (1)})]
          spids: [5466 5490]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_GlobEqual
                      left: {($ Id.VSub_DollarName '$EBUILD_PHASE')}
                      right: {(depend)}
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:5513)
            )
          ]
          action: [
            (C {(export)} {(Id.Lit_VarLike 'SANDBOX_ON=') (DQ (0))})
            (C {(Id.KW_Set set)} {(-f)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name dbkey))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5546)
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:dbkey span_id:5561)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VOp1_Percent
                                            arg_word: {(Id.Lit_Slash /) ('*')}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:5569)
                            )
                          ]
                          action: [
                            (C {(install)} {(-d)} {(-g)} {(${ Id.VSub_Name PORTAGE_GID)} {(-m2775)} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:dbkey span_id:5588)
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op_id: Id.VOp1_Percent
                                        arg_word: {(Id.Lit_Slash /) ('*')}
                                      )
                                  )
                                )
                              }
                            )
                          ]
                          spids: [5551 5571]
                        )
                      ]
                    )
                    (C {(umask)} {(002)})
                  ]
                  spids: [5532 5548]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:auxdbkeys)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ('DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE\n') 
                        (
'\t\tDESCRIPTION KEYWORDS INHERITED IUSE REQUIRED_USE PDEPEND PROVIDE EAPI\n'
                        ) ('\t\tPROPERTIES DEFINED_PHASES HDEPEND UNUSED_04\n') ('\t\tUNUSED_03 UNUSED_02 UNUSED_01')
                      )
                    }
                  spids: [5612]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (command.Pipeline children:[(C {(___eapi_has_HDEPEND)})] negated:T)
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5627)
                    )
                  ]
                  action: [(C {(unset)} {(HDEPEND)})]
                  spids: [5622 5629]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name dbkey))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5659)
                    )
                  ]
                  action: [
                    (command.Simple
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:5664)
                          fd: -1
                          arg_word: {(DQ (${ Id.VSub_Name dbkey))}
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: f
                      iter_words: [{(${ Id.VSub_Name auxdbkeys)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [
                                    {(echo)}
                                    {
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 5690
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(echo)} 
                                                {
                                                  (braced_var_sub
                                                    token: (Token id:Id.VSub_Name val:f span_id:5695)
                                                    prefix_op: (Id.VSub_Bang)
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:5699)
                                      fd: -1
                                      arg_word: {(DQ (${ Id.VSub_Name dbkey))}
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:5709)
                                  arg_word: {($ Id.VSub_QMark '$?')}
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [5645 5661]
                )
              ]
              else_action: [
                (command.ForEach
                  iter_name: f
                  iter_words: [{(${ Id.VSub_Name auxdbkeys)}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {(eval)} 
                              {
                                (DQ ('echo ') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:5739)
                                  ) ('(echo ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:5741)) 
                                  ('{!f}) 1>&') (${ Id.VSub_Name PORTAGE_PIPE_FD)
                                )
                              }
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Exit val:exit span_id:5750)
                              arg_word: {($ Id.VSub_QMark '$?')}
                            )
                          ]
                        )
                      ]
                    )
                )
                (C {(eval)} {(DQ ('exec ') (${ Id.VSub_Name PORTAGE_PIPE_FD) ('>&-'))})
              ]
            )
            (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (f)})
          ]
          spids: [5501 5515]
        )
      ]
      else_action: [
        (C {(declare)} {(-r)} {($ Id.VSub_DollarName '$PORTAGE_READONLY_METADATA')} 
          {($ Id.VSub_DollarName '$PORTAGE_READONLY_VARS')}
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: (C {(___eapi_has_prefix_variables)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:5800)
                )
              ]
              action: [(C {(declare)} {(-r)} {(ED)} {(EPREFIX)} {(EROOT)})]
              spids: [5797 5802]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalAnd
                              left: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name EBUILD_PHASE)}
                                  right: {(test)}
                                )
                              right: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(${ Id.VSub_Name EBUILD_FORCE_TEST)}
                                      right: {(1)}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_EqualTilde
                                      left: {(test)}
                                      right: {(${ Id.VSub_Name PORTAGE_IUSE)}
                                    )
                                )
                            )
                        )
                        (command.Pipeline
                          children: [(C {(has)} {(test)} {(${ Id.VSub_Name USE)})]
                          negated: T
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:5875)
                )
              ]
              action: [(C {(export)} {(Id.Lit_VarLike 'USE=') (DQ (${ Id.VSub_Name USE) (' test'))})]
              spids: [5828 5877]
            )
          ]
        )
        (C {(declare)} {(-r)} {(USE)})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {($ Id.VSub_DollarName '$EBUILD_SH_ARGS')}
                        )
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:5912)
                )
              ]
              action: [
                (command.Subshell
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: {(${ Id.VSub_Name PORTAGE_PIPE_FD)}
                                        )
                                    )
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:5940)
                                )
                              ]
                              action: [
                                (C {(eval)} {(DQ ('exec ') (${ Id.VSub_Name PORTAGE_PIPE_FD) ('>&-'))})
                                (C {(unset)} {(PORTAGE_PIPE_FD)})
                              ]
                              spids: [5928 5942]
                            )
                          ]
                        )
                        (C {(__ebuild_main)} {(${ Id.VSub_Name EBUILD_SH_ARGS)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Exit val:exit span_id:5971)
                          arg_word: {(0)}
                        )
                      ]
                    )
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:5979)
                  arg_word: {($ Id.VSub_QMark '$?')}
                )
              ]
              spids: [5902 5914]
            )
          ]
        )
      ]
    )
    (C {(true)})
  ]
)