(CommandList
  children: [
    (C {(set)} {(-e)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(Lit_Other ':')} 
      {
        (BracedVarSub
          token: <VSub_Name outputs>
          suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(out)})
          spids: [13 17]
        )
      }
    )
    (FuncDef
      name: runHook
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hookName)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [50]
                )
              ]
              spids: [48]
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:var)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$hookName'))}
                  spids: [61]
                )
              ]
              spids: [59]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Name '$hookName'))}
                              right: {(Hook) (Lit_Other '$')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:var)
                              op: PlusEqual
                              rhs: {(s)}
                              spids: [85]
                            )
                          ]
                          spids: [85]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 83]
                )
              ]
              else_action: [
                (Sentence
                  child: 
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:var)
                          op: PlusEqual
                          rhs: {(Hooks)}
                          spids: [91]
                        )
                      ]
                      spids: [91]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              spids: [89 95]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:varRef)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$var') ('[@]'))}
                  spids: [101]
                )
              ]
              spids: [99]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:hook) op:Equal spids:[110])]
              spids: [108]
            )
            (ForEach
              iter_name: hook
              iter_words: [
                {(DQ ('_callImplicitHook 0 ') ($ VSub_Name '$hookName'))}
                {(DQ (BracedVarSub token:<VSub_Name varRef> prefix_op:VSub_Bang spids:[125128]))}
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(_eval)} {(DQ ($ VSub_Name '$hook'))} {(DQ ($ VSub_At '$@'))})]
                  spids: [132 146]
                )
              spids: [118 130]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [45]
        )
      spids: [41 44]
    )
    (FuncDef
      name: runOneHook
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hookName)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [172]
                )
              ]
              spids: [170]
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:var)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$hookName'))}
                  spids: [183]
                )
              ]
              spids: [181]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Name '$hookName'))}
                              right: {(Hook) (Lit_Other '$')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:var)
                              op: PlusEqual
                              rhs: {(s)}
                              spids: [207]
                            )
                          ]
                          spids: [207]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 205]
                )
              ]
              else_action: [
                (Sentence
                  child: 
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:var)
                          op: PlusEqual
                          rhs: {(Hooks)}
                          spids: [213]
                        )
                      ]
                      spids: [213]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              spids: [211 217]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:varRef)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$var') ('[@]'))}
                  spids: [223]
                )
              ]
              spids: [221]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:hook) op:Equal spids:[232])]
              spids: [230]
            )
            (ForEach
              iter_name: hook
              iter_words: [
                {(DQ ('_callImplicitHook 1 ') ($ VSub_Name '$hookName'))}
                {(DQ (BracedVarSub token:<VSub_Name varRef> prefix_op:VSub_Bang spids:[247250]))}
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(_eval)} {(DQ ($ VSub_Name '$hook'))} {(DQ ($ VSub_At '$@'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [-1 270]
                        )
                      ]
                      spids: [-1 278]
                    )
                  ]
                  spids: [254 281]
                )
              spids: [240 252]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [167]
        )
      spids: [163 166]
    )
    (FuncDef
      name: _callImplicitHook
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:def)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [316]
                )
              ]
              spids: [314]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hookName)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [324]
                )
              ]
              spids: [322]
            )
            (Case
              to_match: 
                {
                  (DQ 
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [
                            (AndOr
                              children: [
                                (C {(type)} {(-t)} {(DQ ($ VSub_Name '$hookName'))})
                                (C {(true)})
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                        )
                      left_token: <Left_CommandSub '$('>
                      spids: [333 345]
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(KW_Function function)} {(alias)} {(builtin)}]
                  action: [(C {(DQ ($ VSub_Name '$hookName'))})]
                  spids: [351 357 362 -1]
                )
                (case_arm
                  pat_list: [{(file)}]
                  action: [(C {(source)} {(DQ ($ VSub_Name '$hookName'))})]
                  spids: [365 367 374 -1]
                )
                (case_arm
                  pat_list: [{(keyword)}]
                  action: [(C {(Lit_Other ':')})]
                  spids: [377 379 382 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} 
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name hookName>
                                        prefix_op: VSub_Bang
                                        spids: [396 399]
                                      )
                                    )
                                  } {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: 
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                  arg_word: {(DQ ($ VSub_Name '$def'))}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 405]
                        )
                      ]
                      else_action: [
                        (Sentence
                          child: 
                            (C {(eval)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name hookName>
                                    prefix_op: VSub_Bang
                                    spids: [419 422]
                                  )
                                )
                              }
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      spids: [414 426]
                    )
                  ]
                  spids: [385 387 427 -1]
                )
              ]
              spids: [330 348 430]
            )
          ]
          spids: [311]
        )
      spids: [307 310]
    )
    (FuncDef
      name: _eval
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:code)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [451]
                )
              ]
              spids: [449]
            )
            (C {(shift)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(type)} {(-t)} {(DQ ($ VSub_Name '$code'))})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [465 473]
                              )
                            )
                          } {(Lit_Other '=')} {(KW_Function function)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eval)} 
                      {
                        (DQ ($ VSub_Name '$code') (' ') 
                          (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('@') 
                          (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                        )
                      }
                    )
                  ]
                  spids: [-1 483]
                )
              ]
              else_action: [(C {(eval)} {(DQ ($ VSub_Name '$code'))})]
              spids: [498 508]
            )
          ]
          spids: [446]
        )
      spids: [442 445]
    )
    (FuncDef
      name: stopNest
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
          spids: [528]
        )
      spids: [524 527]
    )
    (FuncDef
      name: header
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(echo)} {(DQ ($ VSub_Number '$1'))})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [539]
        )
      spids: [535 538]
    )
    (FuncDef
      name: closeNest
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
          spids: [554]
        )
      spids: [550 553]
    )
    (FuncDef
      name: echoCmd
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('%s:'))} {(DQ ($ VSub_Number '$1'))})
            (C {(shift)})
            (C {(printf)} {(SQ <' %q'>)} {(DQ ($ VSub_At '$@'))})
            (C {(echo)})
          ]
          spids: [578]
        )
      spids: [574 577]
    )
    (FuncDef
      name: exitHandler
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:exitCode)
                  op: Equal
                  rhs: {(DQ ($ VSub_QMark '$?'))}
                  spids: [626]
                )
              ]
              spids: [626]
            )
            (C {(set)} {(Lit_Other '+') (e)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$showBuildStats'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(times)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(DQ ($ VSub_Name '$NIX_BUILD_TOP') (/.times))}
                          spids: [657]
                        )
                      ]
                    )
                    (Assignment
                      keyword: Assign_Local
                      flags: ["'-a'"]
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:times)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(cat)} {(DQ ($ VSub_Name '$NIX_BUILD_TOP') (/.times))})
                                          ]
                                        )
                                      left_token: <Left_CommandSub '$('>
                                      spids: [671 678]
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [669]
                        )
                      ]
                      spids: [665]
                    )
                    (C {(echo)} {(DQ ('build time elapsed: '))} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name times>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [709 714]
                          )
                        )
                      }
                    )
                  ]
                  spids: [-1 652]
                )
              ]
              spids: [-1 718]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$exitCode'))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(runHook)} {(failureHook)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$succeedOnFailure'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('build failed with exit code ') ($ VSub_Name '$exitCode') 
                                  (' (ignored)')
                                )
                              }
                            )
                            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$out') (/nix-support))})
                            (SimpleCommand
                              words: [{(printf)} {(DQ ('%s'))} {(DQ ($ VSub_Name '$exitCode'))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: -1
                                  arg_word: {(DQ ($ VSub_Name '$out') (/nix-support/failed))}
                                  spids: [808]
                                )
                              ]
                            )
                            (C {(exit)} {(0)})
                          ]
                          spids: [-1 776]
                        )
                      ]
                      spids: [-1 821]
                    )
                  ]
                  spids: [-1 738]
                )
              ]
              else_action: [(C {(runHook)} {(exitHook)})]
              spids: [825 833]
            )
            (C {(exit)} {(DQ ($ VSub_Name '$exitCode'))})
          ]
          spids: [623]
        )
      spids: [619 622]
    )
    (C {(trap)} {(DQ (exitHandler))} {(EXIT)})
    (FuncDef
      name: addToSearchPathWithCustomDelimiter
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:delimiter)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [873]
                )
              ]
              spids: [871]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:varName)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [881]
                )
              ]
              spids: [879]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [889]
                )
              ]
              spids: [887]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-d)} {(DQ ($ VSub_Name '$dir'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(export)} 
                      {
                        (DQ (${ VSub_Name varName) ('=') 
                          (BracedVarSub
                            token: <VSub_Name varName>
                            prefix_op: VSub_Bang
                            spids: [918 921]
                          ) 
                          (BracedVarSub
                            token: <VSub_Name varName>
                            prefix_op: VSub_Bang
                            suffix_op: 
                              (StringUnary
                                op_id: VTest_ColonPlus
                                arg_word: {($ VSub_Name '$delimiter')}
                              )
                            spids: [922 927]
                          ) (${ VSub_Name dir)
                        )
                      }
                    )
                  ]
                  spids: [-1 908]
                )
              ]
              spids: [-1 934]
            )
          ]
          spids: [868]
        )
      spids: [864 867]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:PATH_DELIMITER) op:Equal rhs:{(SQ <':'>)} spids:[939])]
      spids: [939]
    )
    (FuncDef
      name: addToSearchPath
      body: 
        (BraceGroup
          children: [
            (C {(addToSearchPathWithCustomDelimiter)} {(DQ (${ VSub_Name PATH_DELIMITER))} 
              {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [949]
        )
      spids: [945 948]
    )
    (FuncDef
      name: ensureDir
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ 
                    (
'warning: \xe2\x80\x98ensureDir\xe2\x80\x99 is deprecated; use \xe2\x80\x98mkdir\xe2\x80\x99 instead'
                    )
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[981])]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:dir) op:Equal spids:[987])]
              spids: [985]
            )
            (ForEach
              iter_name: dir
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(Lit_Other '[')} {(-x)} {(DQ ($ VSub_Name '$dir'))} 
                                      {(Lit_Other ']')}
                                    )
                                  ]
                                  negated: True
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$dir'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 1019]
                        )
                      ]
                      spids: [-1 1030]
                    )
                  ]
                  spids: [1001 1033]
                )
              spids: [995 999]
            )
          ]
          spids: [972]
        )
      spids: [968 971]
    )
    (FuncDef
      name: _addRpathPrefix
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NIX_NO_SELF_RPATH'))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(1)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(export)} 
                      {(Lit_VarLike 'NIX_LDFLAGS=') 
                        (DQ ('-rpath ') ($ VSub_Number '$1') ('/lib ') ($ VSub_Name '$NIX_LDFLAGS'))
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} 
                                  {(DQ ($ VSub_Name '$NIX_LIB64_IN_SELF_RPATH'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(export)} 
                              {(Lit_VarLike 'NIX_LDFLAGS=') 
                                (DQ ('-rpath ') ($ VSub_Number '$1') ('/lib64 ') 
                                  ($ VSub_Name '$NIX_LDFLAGS')
                                )
                              }
                            )
                          ]
                          spids: [-1 1098]
                        )
                      ]
                      spids: [-1 1112]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} 
                                  {(DQ ($ VSub_Name '$NIX_LIB32_IN_SELF_RPATH'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(export)} 
                              {(Lit_VarLike 'NIX_LDFLAGS=') 
                                (DQ ('-rpath ') ($ VSub_Number '$1') ('/lib32 ') 
                                  ($ VSub_Name '$NIX_LDFLAGS')
                                )
                              }
                            )
                          ]
                          spids: [-1 1128]
                        )
                      ]
                      spids: [-1 1142]
                    )
                  ]
                  spids: [-1 1071]
                )
              ]
              spids: [-1 1145]
            )
          ]
          spids: [1052]
        )
      spids: [1048 1051]
    )
    (FuncDef
      name: isELF
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:fn)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [1162]
                )
              ]
              spids: [1160]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:fd) op:Equal spids:[1170])]
              spids: [1168]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:magic) op:Equal spids:[1175])]
              spids: [1173]
            )
            (SimpleCommand
              words: [{(exec)} {(Lit_LBrace '{') (fd) (Lit_RBrace '}')}]
              redirects: [
                (Redir
                  op_id: Redir_Less
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name '$fn'))}
                  spids: [1183]
                )
              ]
            )
            (C {(read)} {(-r)} {(-n)} {(4)} {(-u)} {(DQ ($ VSub_Name '$fd'))} {(magic)})
            (SimpleCommand
              words: [{(exec)} {(Lit_LBrace '{') (fd) (Lit_RBrace '}')}]
              redirects: [(Redir op_id:Redir_LessAnd fd:-1 arg_word:{(-)} spids:[1212])]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Name '$magic'))}
                              right: {(ELF)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 1231]
                )
              ]
              else_action: [
                (Sentence
                  child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  terminator: <Op_Semi ';'>
                )
              ]
              spids: [1238 1245]
            )
          ]
          spids: [1157]
        )
      spids: [1153 1156]
    )
    (FuncDef
      name: isScript
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:fn)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [1265]
                )
              ]
              spids: [1263]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:fd) op:Equal spids:[1273])]
              spids: [1271]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:magic) op:Equal spids:[1278])]
              spids: [1276]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(Lit_Other '[')} {(-x)} {(/bin/sh)} {(Lit_Other ']')})]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 1294]
                )
              ]
              spids: [-1 1301]
            )
            (SimpleCommand
              words: [{(exec)} {(Lit_LBrace '{') (fd) (Lit_RBrace '}')}]
              redirects: [
                (Redir
                  op_id: Redir_Less
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name '$fn'))}
                  spids: [1309]
                )
              ]
            )
            (C {(read)} {(-r)} {(-n)} {(2)} {(-u)} {(DQ ($ VSub_Name '$fd'))} {(magic)})
            (SimpleCommand
              words: [{(exec)} {(Lit_LBrace '{') (fd) (Lit_RBrace '}')}]
              redirects: [(Redir op_id:Redir_LessAnd fd:-1 arg_word:{(-)} spids:[1338])]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Name '$magic'))}
                              right: 
                                {(EscapedLiteralPart token:<Lit_EscapedChar '\\#'>) (Lit_Other '!')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 1358]
                )
              ]
              else_action: [
                (Sentence
                  child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  terminator: <Op_Semi ';'>
                )
              ]
              spids: [1365 1372]
            )
          ]
          spids: [1260]
        )
      spids: [1256 1259]
    )
    (FuncDef
      name: printLines
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (DBracket
                  expr: (BoolBinary op_id:BoolBinary_gt left:{(DQ ($ VSub_Pound '$#'))} right:{(0)})
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              op_id: Op_DPipe
            )
            (C {(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1384]
        )
      spids: [1380 1383]
    )
    (FuncDef
      name: printWords
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (DBracket
                  expr: (BoolBinary op_id:BoolBinary_gt left:{(DQ ($ VSub_Pound '$#'))} right:{(0)})
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              op_id: Op_DPipe
            )
            (C {(printf)} {(SQ <'%s '>)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1423]
        )
      spids: [1419 1422]
    )
    (C {(export)} {(SOURCE_DATE_EPOCH)})
    (C {(Lit_Other ':')} 
      {
        (BracedVarSub
          token: <VSub_Name SOURCE_DATE_EPOCH>
          suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(1)})
          spids: [1484 1488]
        )
      }
    )
    (C {(shopt)} {(-s)} {(nullglob)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:PATH) op:Equal rhs:{(SQ )} spids:[1512])]
      spids: [1512]
    )
    (ForEach
      iter_name: i
      iter_words: [{($ VSub_Name '$initialPath')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$i'))} {(Lit_Other '=')} {(/)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:i)
                              op: Equal
                              rhs: {(SQ )}
                              spids: [1543]
                            )
                          ]
                          spids: [1543]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 1541]
                )
              ]
              spids: [-1 1546]
            )
            (C {(addToSearchPath)} {(PATH)} {(DQ ($ VSub_Name '$i') (/bin))})
          ]
          spids: [1523 1558]
        )
      spids: [1519 1521]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NIX_DEBUG'))} {(Lit_Other '=')} {(1)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('initial path: ') ($ VSub_Name '$PATH'))})]
          spids: [-1 1576]
        )
      ]
      spids: [-1 1586]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$SHELL'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Sentence
              child: (C {(echo)} {(DQ ('SHELL not set'))})
              terminator: <Op_Semi ';'>
            )
            (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ';'>)
          ]
          spids: [-1 1606]
        )
      ]
      spids: [-1 1620]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BASH)
          op: Equal
          rhs: {(DQ ($ VSub_Name '$SHELL'))}
          spids: [1622]
        )
      ]
      spids: [1622]
    )
    (C {(export)} {(Lit_VarLike 'CONFIG_SHELL=') (DQ ($ VSub_Name '$SHELL'))})
    (FuncDef
      name: paxmark
      body: 
        (BraceGroup
          children: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
          spids: [1646]
        )
      spids: [1642 1645]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$shell'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Sentence
              child: (C {(export)} {(Lit_VarLike 'shell=') (DQ ($ VSub_Name '$SHELL'))})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [-1 1671]
        )
      ]
      spids: [-1 1681]
    )
    (C {(runHook)} {(preHook)})
    (C {(runHook)} {(addInputsHook)})
    (FuncDef
      name: findInputs
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pkg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [1716]
                )
              ]
              spids: [1714]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:var)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [1724]
                )
              ]
              spids: [1722]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:propagatedBuildInputsFile)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [1732]
                )
              ]
              spids: [1730]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:varRef)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$var') ('[*]'))}
                  spids: [1757]
                )
              ]
              spids: [1755]
            )
            (Case
              to_match: 
                {(DQ (BracedVarSub token:<VSub_Name varRef> prefix_op:VSub_Bang spids:[17681771]))}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (DQ (' ') ($ VSub_Name '$pkg') (' ')) (Lit_Other '*')}]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [1777 1784 1790 -1]
                )
              ]
              spids: [1765 1774 1793]
            )
            (C {(eval)} {(DQ ($ VSub_Name '$var')) (SQ <'+=("$pkg")'>)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_Name '$pkg'))} {(Lit_Other ']')})
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('build input ') ($ VSub_Name '$pkg') (' does not exist'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1834])]
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 1823]
                )
              ]
              spids: [-1 1843]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$pkg'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(source)} {(DQ ($ VSub_Name '$pkg'))})]
                  spids: [-1 1860]
                )
              ]
              spids: [-1 1870]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-d)} {(DQ ($ VSub_Name '$pkg') (/bin))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(addToSearchPath)} {(_PATH)} {(DQ ($ VSub_Name '$pkg') (/bin))})]
                  spids: [-1 1888]
                )
              ]
              spids: [-1 1901]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$pkg') (/nix-support/setup-hook))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(source)} {(DQ ($ VSub_Name '$pkg') (/nix-support/setup-hook))})]
                  spids: [-1 1919]
                )
              ]
              spids: [-1 1930]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} 
                          {
                            (DQ ($ VSub_Name '$pkg') (/nix-support/) 
                              ($ VSub_Name '$propagatedBuildInputsFile')
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:pkgNext) op:Equal spids:[1954])]
                      spids: [1952]
                    )
                    (ForEach
                      iter_name: pkgNext
                      iter_words: [
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (SimpleCommand
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Less
                                        fd: -1
                                        arg_word: 
                                          {
                                            (DQ ($ VSub_Name '$pkg') (/nix-support/) 
                                              ($ VSub_Name '$propagatedBuildInputsFile')
                                            )
                                          }
                                        spids: [1964]
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1963 1971]
                          )
                        }
                      ]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (C {(findInputs)} {(DQ ($ VSub_Name '$pkgNext'))} {(DQ ($ VSub_Name '$var'))} 
                              {(DQ ($ VSub_Name '$propagatedBuildInputsFile'))}
                            )
                          ]
                          spids: [1974 1992]
                        )
                      spids: [1962 1972]
                    )
                  ]
                  spids: [-1 1949]
                )
              ]
              spids: [-1 1995]
            )
          ]
          spids: [1711]
        )
      spids: [1707 1710]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$crossConfig'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [(assign_pair lhs:(LhsName name:nativePkgs) op:Equal spids:[2028])]
              spids: [2024]
            )
            (ForEach
              iter_name: i
              iter_words: [
                {($ VSub_Name '$nativeBuildInputs')}
                {($ VSub_Name '$buildInputs')}
                {($ VSub_Name '$defaultNativeBuildInputs')}
                {($ VSub_Name '$defaultBuildInputs')}
                {($ VSub_Name '$propagatedNativeBuildInputs')}
                {($ VSub_Name '$propagatedBuildInputs')}
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(findInputs)} {(DQ ($ VSub_Name '$i'))} {(nativePkgs)} 
                      {(propagated-native-build-inputs)}
                    )
                  ]
                  spids: [2054 2068]
                )
              spids: [2036 2052]
            )
          ]
          spids: [-1 2013]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_Declare
          flags: ["'-a'"]
          pairs: [(assign_pair lhs:(LhsName name:crossPkgs) op:Equal spids:[2077])]
          spids: [2073]
        )
        (ForEach
          iter_name: i
          iter_words: [
            {($ VSub_Name '$buildInputs')}
            {($ VSub_Name '$defaultBuildInputs')}
            {($ VSub_Name '$propagatedBuildInputs')}
          ]
          do_arg_iter: False
          body: 
            (DoGroup
              children: [
                (C {(findInputs)} {(DQ ($ VSub_Name '$i'))} {(crossPkgs)} {(propagated-build-inputs)})
              ]
              spids: [2093 2107]
            )
          spids: [2085 2091]
        )
        (Assignment
          keyword: Assign_Declare
          flags: ["'-a'"]
          pairs: [(assign_pair lhs:(LhsName name:nativePkgs) op:Equal spids:[2115])]
          spids: [2111]
        )
        (ForEach
          iter_name: i
          iter_words: [
            {($ VSub_Name '$nativeBuildInputs')}
            {($ VSub_Name '$defaultNativeBuildInputs')}
            {($ VSub_Name '$propagatedNativeBuildInputs')}
          ]
          do_arg_iter: False
          body: 
            (DoGroup
              children: [
                (C {(findInputs)} {(DQ ($ VSub_Name '$i'))} {(nativePkgs)} 
                  {(propagated-native-build-inputs)}
                )
              ]
              spids: [2131 2145]
            )
          spids: [2123 2129]
        )
      ]
      spids: [2070 2147]
    )
    (FuncDef
      name: _addToNativeEnv
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pkg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [2166]
                )
              ]
              spids: [2164]
            )
            (C {(runHook)} {(envHook)} {(DQ ($ VSub_Name '$pkg'))})
          ]
          spids: [2161]
        )
      spids: [2157 2160]
    )
    (ForEach
      iter_name: i
      iter_words: [
        {
          (DQ 
            (BracedVarSub
              token: <VSub_Name nativePkgs>
              bracket_op: (WholeArray op_id:Lit_At)
              spids: [2195 2200]
            )
          )
        }
      ]
      do_arg_iter: False
      body: (DoGroup children:[(C {(_addToNativeEnv)} {(DQ ($ VSub_Name '$i'))})] spids:[22042213])
      spids: [2193 2202]
    )
    (FuncDef
      name: _addToCrossEnv
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pkg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [2225]
                )
              ]
              spids: [2223]
            )
            (C {(runHook)} {(crossEnvHook)} {(DQ ($ VSub_Name '$pkg'))})
          ]
          spids: [2220]
        )
      spids: [2216 2219]
    )
    (ForEach
      iter_name: i
      iter_words: [
        {
          (DQ 
            (BracedVarSub
              token: <VSub_Name crossPkgs>
              bracket_op: (WholeArray op_id:Lit_At)
              spids: [2254 2259]
            )
          )
        }
      ]
      do_arg_iter: False
      body: (DoGroup children:[(C {(_addToCrossEnv)} {(DQ ($ VSub_Name '$i'))})] spids:[22632272])
      spids: [2252 2261]
    )
    (C {(_addRpathPrefix)} {(DQ ($ VSub_Name '$out'))})
    (C {(export)} {(Lit_VarLike 'TZ=') (UTC)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$prefix'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:prefix)
                      op: Equal
                      rhs: {(DQ ($ VSub_Name '$out'))}
                      spids: [2325]
                    )
                  ]
                  spids: [2325]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [-1 2322]
        )
      ]
      spids: [-1 2331]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$useTempPrefix'))} {(Lit_Other '=')} {(1)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:prefix)
                      op: Equal
                      rhs: {(DQ ($ VSub_Name '$NIX_BUILD_TOP') (/tmp_prefix))}
                      spids: [2352]
                    )
                  ]
                  spids: [2352]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [-1 2349]
        )
      ]
      spids: [-1 2359]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PATH)
          op: Equal
          rhs: 
            {($ VSub_Name '$_PATH') 
              (BracedVarSub
                token: <VSub_Name _PATH>
                suffix_op: (StringUnary op_id:VTest_ColonPlus arg_word:{(':')})
                spids: [2365 2369]
              ) ($ VSub_Name '$PATH')
            }
          spids: [2363]
        )
      ]
      spids: [2363]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NIX_DEBUG'))} {(Lit_Other '=')} {(1)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('final path: ') ($ VSub_Name '$PATH'))})]
          spids: [-1 2387]
        )
      ]
      spids: [-1 2397]
    )
    (C {(export)} {(Lit_VarLike 'NIX_INDENT_MAKE=') (1)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(-z)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name NIX_BUILD_CORES>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                        spids: [2428 2431]
                      )
                    )
                  } {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NIX_BUILD_CORES)
                  op: Equal
                  rhs: {(DQ (1))}
                  spids: [2440]
                )
              ]
              spids: [2440]
            )
          ]
          spids: [-1 2437]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NIX_BUILD_CORES'))} {(-le)} {(0)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NIX_BUILD_CORES)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (AndOr
                                children: [
                                  (SimpleCommand
                                    words: [{(nproc)}]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [2467]
                                      )
                                    ]
                                  )
                                  (C {(true)})
                                ]
                                op_id: Op_DPipe
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [2464 2473]
                      )
                    }
                  spids: [2463]
                )
              ]
              spids: [2463]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(expr)}
                            {(DQ ($ VSub_Name '$NIX_BUILD_CORES'))}
                            {(Lit_Other ':')}
                            {(DQ ('^[0-9][0-9]*') (Lit_Other '$'))}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [2480]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [2483]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(Lit_Other ':')})]
                  spids: [-1 2498]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:NIX_BUILD_CORES)
                      op: Equal
                      rhs: {(DQ (1))}
                      spids: [2507]
                    )
                  ]
                  spids: [2507]
                )
              ]
              spids: [2504 2513]
            )
          ]
          spids: [2445 2460]
        )
      ]
      spids: [-1 2515]
    )
    (C {(export)} {(NIX_BUILD_CORES)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  children: [
                    (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$SSL_CERT_FILE'))} {(Lit_Other ']')})
                    (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$IN_NIX_SHELL'))} {(Lit_Other ']')})
                  ]
                  op_id: Op_DAmp
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(export)} {(Lit_VarLike 'SSL_CERT_FILE=') (/no-cert-file.crt)})]
          spids: [-1 2557]
        )
      ]
      spids: [-1 2565]
    )
    (FuncDef
      name: substitute
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:input)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [2586]
                )
              ]
              spids: [2584]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:output)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [2594]
                )
              ]
              spids: [2592]
            )
            (C {(shift)} {(2)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$input'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name FUNCNAME>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                              spids: [2627 2632]
                            ) ("(): ERROR: file '") ($ VSub_Name '$input') ("' does not exist")
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[2638])]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [-1 2621]
                )
              ]
              spids: [-1 2647]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:content) op:Equal spids:[2653])]
              spids: [2651]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(read)} {(-r)} {(-N)} {(0)} {(content)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Less
                              fd: -1
                              arg_word: {(DQ ($ VSub_Name '$input'))}
                              spids: [2676]
                            )
                          ]
                          more_env: [(env_pair name:IFS val:{(SQ )} spids:[2662])]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name FUNCNAME>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                              spids: [2689 2694]
                            ) ('(): ERROR: File ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$input') 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\"'>
                            ) (" has null bytes, won't process")
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[2702])]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [-1 2683]
                )
              ]
              spids: [-1 2711]
            )
            (While
              cond: [
                (Sentence
                  child: (DParen child:(ArithWord w:{(DQ ($ VSub_Pound '$#'))}))
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(--replace)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:pattern)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2'))}
                                  spids: [2743]
                                )
                              ]
                              spids: [2743]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:replacement)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$3'))}
                                  spids: [2749]
                                )
                              ]
                              spids: [2749]
                            )
                            (C {(shift)} {(3)})
                          ]
                          spids: [2739 2740 2760 -1]
                        )
                        (case_arm
                          pat_list: [{(--subst-var)}]
                          action: [
                            (Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:varName)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$2'))}
                                  spids: [2770]
                                )
                              ]
                              spids: [2768]
                            )
                            (C {(shift)} {(2)})
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (Pipeline
                                          children: [
                                            (DBracket
                                              expr: 
                                                (BoolBinary
                                                  op_id: BoolBinary_EqualTilde
                                                  left: {(DQ ($ VSub_Name '$varName'))}
                                                  right: 
                                                    {(Lit_Other '^') (Lit_Other '[') (a-zA-Z_) 
                                                      (Lit_Other ']') (Lit_Other '[') (a-zA-Z0-9_) (Lit_Other ']') (Lit_Other '*') (Lit_Other '$')
                                                    }
                                                )
                                            )
                                          ]
                                          negated: True
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (SimpleCommand
                                      words: [
                                        {(echo)}
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name FUNCNAME>
                                              bracket_op: 
                                                (ArrayIndex
                                                  expr: (ArithWord w:{(Lit_Digits 0)})
                                                )
                                              spids: [2816 2821]
                                            ) ('(): WARNING: substitution variables should be valid bash names,')
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_GreatAnd
                                          fd: -1
                                          arg_word: {(2)}
                                          spids: [2825]
                                        )
                                      ]
                                    )
                                    (SimpleCommand
                                      words: [
                                        {(echo)}
                                        {
                                          (DQ ('  ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                            ($ VSub_Name '$varName') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                                            (
" isn't and therefore was skipped; it might be caused"
                                            )
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_GreatAnd
                                          fd: -1
                                          arg_word: {(2)}
                                          spids: [2839]
                                        )
                                      ]
                                    )
                                    (SimpleCommand
                                      words: [
                                        {(echo)}
                                        {
                                          (DQ 
                                            (
'  by multi-line phases in variables - see #14907 for details.'
                                            )
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_GreatAnd
                                          fd: -1
                                          arg_word: {(2)}
                                          spids: [2849]
                                        )
                                      ]
                                    )
                                    (ControlFlow
                                      token: <ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [-1 2810]
                                )
                              ]
                              spids: [-1 2856]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:pattern)
                                  op: Equal
                                  rhs: {(DQ ('@') ($ VSub_Name '$varName') ('@'))}
                                  spids: [2859]
                                )
                              ]
                              spids: [2859]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:replacement)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name varName>
                                          prefix_op: VSub_Bang
                                          spids: [2869 2872]
                                        )
                                      )
                                    }
                                  spids: [2867]
                                )
                              ]
                              spids: [2867]
                            )
                          ]
                          spids: [2764 2765 2876 -1]
                        )
                        (case_arm
                          pat_list: [{(--subst-var-by)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:pattern)
                                  op: Equal
                                  rhs: {(DQ ('@') ($ VSub_Number '$2') ('@'))}
                                  spids: [2884]
                                )
                              ]
                              spids: [2884]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:replacement)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number '$3'))}
                                  spids: [2892]
                                )
                              ]
                              spids: [2892]
                            )
                            (C {(shift)} {(3)})
                          ]
                          spids: [2880 2881 2903 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (SimpleCommand
                              words: [
                                {(echo)}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name FUNCNAME>
                                      bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                                      spids: [2914 2919]
                                    ) ('(): ERROR: Invalid command line argument: ') ($ VSub_Number '$1')
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: -1
                                  arg_word: {(2)}
                                  spids: [2924]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [2907 2908 2933 -1]
                        )
                      ]
                      spids: [2730 2736 2936]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:content)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name content>
                                  suffix_op: 
                                    (PatSub
                                      pat: {(DQ ($ VSub_Name '$pattern'))}
                                      replace: {($ VSub_Name '$replacement')}
                                      do_all: True
                                      do_prefix: False
                                      do_suffix: False
                                    )
                                  spids: [2942 2951]
                                )
                              )
                            }
                          spids: [2940]
                        )
                      ]
                      spids: [2940]
                    )
                  ]
                  spids: [2727 2955]
                )
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-e)} {(DQ ($ VSub_Name '$output'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(chmod)} {(Lit_Other '+') (w)} {(DQ ($ VSub_Name '$output'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 2972]
                )
              ]
              spids: [-1 2984]
            )
            (SimpleCommand
              words: [{(printf)} {(DQ ('%s'))} {(DQ ($ VSub_Name '$content'))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name '$output'))}
                  spids: [2997]
                )
              ]
            )
          ]
          spids: [2581]
        )
      spids: [2577 2580]
    )
    (FuncDef
      name: substituteInPlace
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:fileName)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [3016]
                )
              ]
              spids: [3014]
            )
            (C {(shift)})
            (C {(substitute)} {(DQ ($ VSub_Name '$fileName'))} {(DQ ($ VSub_Name '$fileName'))} 
              {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [3011]
        )
      spids: [3007 3010]
    )
    (FuncDef
      name: substituteAll
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:input)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [3061]
                )
              ]
              spids: [3059]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:output)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [3069]
                )
              ]
              spids: [3067]
            )
            (Assignment
              keyword: Assign_Local
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:args)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [3079]
                )
              ]
              spids: [3075]
            )
            (ForEach
              iter_name: varName
              iter_words: [
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (Pipeline
                            children: [
                              (C {(env)})
                              (C {(sed)} {(-e)} 
                                {
                                  (SQ <'s/^'> <Lit_EscapedChar '\\('> <'[a-z][^= '> 
                                    <Lit_EscapedChar '\\t'> <']*'> <Lit_EscapedChar '\\)'> <'=.*/'> <Lit_EscapedChar '\\\\'> <'1/; t '> <Lit_EscapedChar '\\n'> <' d'>
                                  )
                                }
                              )
                            ]
                            negated: False
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [3095 3117]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NIX_DEBUG'))} {(Lit_Other '=')} 
                                  {(DQ (1))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('@') (${ VSub_Name varName) ("@ -> '") 
                                  (BracedVarSub
                                    token: <VSub_Name varName>
                                    prefix_op: VSub_Bang
                                    spids: [3151 3154]
                                  ) ("'")
                                )
                              }
                            )
                          ]
                          spids: [-1 3140]
                        )
                      ]
                      spids: [-1 3159]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:args)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [{(DQ (--subst-var))} {(DQ ($ VSub_Name '$varName'))}]
                              )
                            }
                          spids: [3162]
                        )
                      ]
                      spids: [3162]
                    )
                  ]
                  spids: [3120 3174]
                )
              spids: [3094 3118]
            )
            (C {(substitute)} {(DQ ($ VSub_Name '$input'))} {(DQ ($ VSub_Name '$output'))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name args>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [3189 3194]
                  )
                )
              }
            )
          ]
          spids: [3056]
        )
      spids: [3052 3055]
    )
    (FuncDef
      name: substituteAllInPlace
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:fileName)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [3210]
                )
              ]
              spids: [3208]
            )
            (C {(shift)})
            (C {(substituteAll)} {(DQ ($ VSub_Name '$fileName'))} {(DQ ($ VSub_Name '$fileName'))} 
              {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [3205]
        )
      spids: [3201 3204]
    )
    (FuncDef
      name: dumpVars
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$noDumpEnvVars'))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(1)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(export)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(DQ ($ VSub_Name '$NIX_BUILD_TOP') (/env-vars))}
                              spids: [3288]
                            )
                          ]
                        )
                        (C {(true)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 3283]
                )
              ]
              spids: [-1 3300]
            )
          ]
          spids: [3264]
        )
      spids: [3260 3263]
    )
    (FuncDef
      name: stripHash
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:strippedName) op:Equal spids:[3321])]
              spids: [3319]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:strippedName)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(basename)} {(DQ ($ VSub_Number '$1'))})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [3330 3336]
                        )
                      )
                    }
                  spids: [3328]
                )
              ]
              spids: [3328]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_Name '$strippedName'))})
                            (C {(grep)} {(-q)} {(SQ <'^[a-z0-9]\\{32\\}-'>)})
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [(C {(echo)} {(DQ ($ VSub_Name '$strippedName'))}) (C {(cut)} {(-c34-)})]
                      negated: False
                    )
                  ]
                  spids: [-1 3359]
                )
              ]
              else_action: [(C {(echo)} {(DQ ($ VSub_Name '$strippedName'))})]
              spids: [3375 3385]
            )
          ]
          spids: [3316]
        )
      spids: [3312 3315]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:unpackCmdHooks)
          op: PlusEqual
          rhs: {(ArrayLiteralPart words:[{(_defaultUnpack)}])}
          spids: [3391]
        )
      ]
      spids: [3391]
    )
    (FuncDef
      name: _defaultUnpack
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:fn)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [3405]
                )
              ]
              spids: [3403]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-d)} {(DQ ($ VSub_Name '$fn'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cp)} {(-pr)} {(--reflink) (Lit_Other '=') (auto)} {(DQ ($ VSub_Name '$fn'))} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(stripHash)} {(DQ ($ VSub_Name '$fn'))})]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [3454 3460]
                          )
                        )
                      }
                    )
                  ]
                  spids: [-1 3425]
                )
              ]
              else_action: [
                (Case
                  to_match: {(DQ ($ VSub_Name '$fn'))}
                  arms: [
                    (case_arm
                      pat_list: [{(Lit_Other '*') (.tar.xz)} {(Lit_Other '*') (.tar.lzma)}]
                      action: [
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{(xz)} {(-d)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Less
                                  fd: -1
                                  arg_word: {(DQ ($ VSub_Name '$fn'))}
                                  spids: [3496]
                                )
                              ]
                            )
                            (C {(tar)} {(xf)} {(-)})
                          ]
                          negated: False
                        )
                      ]
                      spids: [3478 3485 3511 -1]
                    )
                    (case_arm
                      pat_list: [
                        {(Lit_Other '*') (.tar)}
                        {(Lit_Other '*') (.tar.) (Lit_Other '*')}
                        {(Lit_Other '*') (.tgz)}
                        {(Lit_Other '*') (.tbz2)}
                      ]
                      action: [(C {(tar)} {(xf)} {(DQ ($ VSub_Name '$fn'))})]
                      spids: [3514 3532 3552 -1]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other '*')}]
                      action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})]
                      spids: [3555 3556 3564 -1]
                    )
                  ]
                  spids: [3469 3475 3567]
                )
              ]
              spids: [3465 3571]
            )
          ]
          spids: [3400]
        )
      spids: [3396 3399]
    )
    (FuncDef
      name: unpackFile
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:curSrc)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [3584]
                )
              ]
              spids: [3584]
            )
            (C {(header)} {(DQ ('unpacking source archive ') ($ VSub_Name '$curSrc'))} {(3)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(runOneHook)} {(unpackCmd)} {(DQ ($ VSub_Name '$curSrc'))})]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {(DQ ('do not know how to unpack source archive ') ($ VSub_Name '$curSrc'))}
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 3613]
                )
              ]
              spids: [-1 3629]
            )
          ]
          spids: [3581]
        )
      spids: [3577 3580]
    )
    (FuncDef
      name: unpackPhase
      body: 
        (BraceGroup
          children: [
            (C {(runHook)} {(preUnpack)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$srcs'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$src'))} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(SQ <'variable $src or $srcs should point to the source'>)})
                            (C {(exit)} {(1)})
                          ]
                          spids: [-1 3677]
                        )
                      ]
                      spids: [-1 3696]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:srcs)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$src'))}
                          spids: [3699]
                        )
                      ]
                      spids: [3699]
                    )
                  ]
                  spids: [-1 3661]
                )
              ]
              spids: [-1 3705]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:dirsBefore) op:Equal rhs:{(DQ )} spids:[3727])]
              spids: [3725]
            )
            (ForEach
              iter_name: i
              iter_words: [{(Lit_Other '*')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-d)} {(DQ ($ VSub_Name '$i'))} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:dirsBefore)
                                  op: Equal
                                  rhs: 
                                    {(DQ ($ VSub_Name '$dirsBefore') (' ') ($ VSub_Name '$i') (' '))}
                                  spids: [3760]
                                )
                              ]
                              spids: [3760]
                            )
                          ]
                          spids: [-1 3757]
                        )
                      ]
                      spids: [-1 3769]
                    )
                  ]
                  spids: [3741 3772]
                )
              spids: [3737 3739]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$srcs')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(unpackFile)} {(DQ ($ VSub_Name '$i'))})]
                  spids: [3789 3799]
                )
              spids: [3785 3787]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$setSourceRoot'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(runOneHook)} {(setSourceRoot)})]
                  spids: [-1 3820]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$sourceRoot'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:sourceRoot)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [3844]
                        )
                      ]
                      spids: [3844]
                    )
                    (ForEach
                      iter_name: i
                      iter_words: [{(Lit_Other '*')}]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-d)} {(DQ ($ VSub_Name '$i'))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Case
                                      to_match: {($ VSub_Name '$dirsBefore')}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {(Lit_Other '*') 
                                              (EscapedLiteralPart
                                                token: <Lit_EscapedChar '\\ '>
                                              ) ($ VSub_Name '$i') (EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) (Lit_Other '*')
                                            }
                                          ]
                                          spids: [3882 3887 3890 -1]
                                        )
                                        (case_arm
                                          pat_list: [{(Lit_Other '*')}]
                                          action: [
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (C {(Lit_Other '[')} {(-n)} 
                                                          {(DQ ($ VSub_Name '$sourceRoot'))} {(Lit_Other ']')}
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {(echo)} 
                                                      {
                                                        (DQ 
                                                          (
'unpacker produced multiple directories'
                                                          )
                                                        )
                                                      }
                                                    )
                                                    (C {(exit)} {(1)})
                                                  ]
                                                  spids: [-1 3910]
                                                )
                                              ]
                                              spids: [-1 3925]
                                            )
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:sourceRoot)
                                                  op: Equal
                                                  rhs: {(DQ ($ VSub_Name '$i'))}
                                                  spids: [3928]
                                                )
                                              ]
                                              spids: [3928]
                                            )
                                          ]
                                          spids: [3893 3894 3934 -1]
                                        )
                                      ]
                                      spids: [3875 3879 3937]
                                    )
                                  ]
                                  spids: [-1 3872]
                                )
                              ]
                              spids: [-1 3940]
                            )
                          ]
                          spids: [3856 3943]
                        )
                      spids: [3852 3854]
                    )
                  ]
                  spids: [3828 3841]
                )
              ]
              spids: [-1 3946]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$sourceRoot'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('unpacker appears to have produced no directories'))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 3963]
                )
              ]
              spids: [-1 3978]
            )
            (C {(echo)} {(DQ ('source root is ') ($ VSub_Name '$sourceRoot'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$dontMakeSourcesWritable'))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(1)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(chmod)} {(-R)} {(u) (Lit_Other '+') (w)} {(DQ ($ VSub_Name '$sourceRoot'))})
                  ]
                  spids: [-1 4019]
                )
              ]
              spids: [-1 4035]
            )
            (C {(runHook)} {(postUnpack)})
          ]
          spids: [3639]
        )
      spids: [3635 3638]
    )
    (FuncDef
      name: patchPhase
      body: 
        (BraceGroup
          children: [
            (C {(runHook)} {(prePatch)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$patches')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(header)} {(DQ ('applying patch ') ($ VSub_Name '$i'))} {(3)})
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:uncompress)
                          op: Equal
                          rhs: {(cat)}
                          spids: [4084]
                        )
                      ]
                      spids: [4082]
                    )
                    (Case
                      to_match: {(DQ ($ VSub_Name '$i'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '*') (.gz)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:uncompress)
                                  op: Equal
                                  rhs: {(DQ ('gzip -d'))}
                                  spids: [4102]
                                )
                              ]
                              spids: [4102]
                            )
                          ]
                          spids: [4097 4099 4108 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*') (.bz2)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:uncompress)
                                  op: Equal
                                  rhs: {(DQ ('bzip2 -d'))}
                                  spids: [4116]
                                )
                              ]
                              spids: [4116]
                            )
                          ]
                          spids: [4111 4113 4122 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*') (.xz)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:uncompress)
                                  op: Equal
                                  rhs: {(DQ ('xz -d'))}
                                  spids: [4130]
                                )
                              ]
                              spids: [4130]
                            )
                          ]
                          spids: [4125 4127 4136 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*') (.lzma)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:uncompress)
                                  op: Equal
                                  rhs: {(DQ ('lzma -d'))}
                                  spids: [4144]
                                )
                              ]
                              spids: [4144]
                            )
                          ]
                          spids: [4139 4141 4150 -1]
                        )
                      ]
                      spids: [4088 4094 4153]
                    )
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{($ VSub_Name '$uncompress')}]
                          redirects: [
                            (Redir
                              op_id: Redir_Less
                              fd: -1
                              arg_word: {(DQ ($ VSub_Name '$i'))}
                              spids: [4166]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [4172]
                            )
                          ]
                        )
                        (C {(patch)} 
                          {
                            (BracedVarSub
                              token: <VSub_Name patchFlags>
                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(-p1)})
                              spids: [4179 4183]
                            )
                          }
                        )
                      ]
                      negated: False
                    )
                  ]
                  spids: [4069 4186]
                )
              spids: [4065 4067]
            )
            (C {(runHook)} {(postPatch)})
          ]
          spids: [4051]
        )
      spids: [4047 4050]
    )
    (FuncDef
      name: fixLibtool
      body: 
        (BraceGroup
          children: [
            (C {(sed)} {(-i)} {(-e)} {(SQ <'s^eval sys_lib_.*search_path=.*^^'>)} 
              {(DQ ($ VSub_Number '$1'))}
            )
          ]
          spids: [4202]
        )
      spids: [4198 4201]
    )
    (FuncDef
      name: configurePhase
      body: 
        (BraceGroup
          children: [
            (C {(runHook)} {(preConfigure)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalAnd
                              left: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: {(DQ ($ VSub_Name '$configureScript'))}
                                )
                              right: (BoolUnary op_id:BoolUnary_x child:{(./configure)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:configureScript)
                          op: Equal
                          rhs: {(./configure)}
                          spids: [4258]
                        )
                      ]
                      spids: [4258]
                    )
                  ]
                  spids: [-1 4255]
                )
              ]
              spids: [-1 4262]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$dontFixLibtool'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[4284])]
                      spids: [4282]
                    )
                    (Pipeline
                      children: [
                        (C {(find)} {(.)} {(-iname)} {(DQ (ltmain.sh))} {(-print0)})
                        (While
                          cond: [
                            (Sentence
                              child: 
                                (SimpleCommand
                                  words: [{(read)} {(-r)} {(-d)} {(SQ )} {(i)}]
                                  more_env: [(env_pair name:IFS val:{(SQ )} spids:[4303])]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (DoGroup
                              children: [
                                (C {(echo)} {(DQ ('fixing libtool script ') ($ VSub_Name '$i'))})
                                (C {(fixLibtool)} {(DQ ($ VSub_Name '$i'))})
                              ]
                              spids: [4319 4337]
                            )
                        )
                      ]
                      negated: False
                    )
                  ]
                  spids: [-1 4279]
                )
              ]
              spids: [-1 4340]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalAnd
                              left: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: {(DQ ($ VSub_Name '$dontAddPrefix'))}
                                )
                              right: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Name '$prefix'))})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:configureFlags)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name prefixKey>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VTest_ColonHyphen
                                      arg_word: {('--prefix=')}
                                    )
                                  spids: [4370 4374]
                                ) ($ VSub_Name '$prefix') (' ') ($ VSub_Name '$configureFlags')
                              )
                            }
                          spids: [4368]
                        )
                      ]
                      spids: [4368]
                    )
                  ]
                  spids: [-1 4365]
                )
              ]
              spids: [-1 4381]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$dontAddDisableDepTrack'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  children: [
                                    (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$configureScript'))} 
                                      {(Lit_Other ']')}
                                    )
                                    (C {(grep)} {(-q)} {(dependency-tracking)} 
                                      {(DQ ($ VSub_Name '$configureScript'))}
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:configureFlags)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ('--disable-dependency-tracking ') 
                                        ($ VSub_Name '$configureFlags')
                                      )
                                    }
                                  spids: [4433]
                                )
                              ]
                              spids: [4433]
                            )
                          ]
                          spids: [-1 4430]
                        )
                      ]
                      spids: [-1 4440]
                    )
                  ]
                  spids: [-1 4402]
                )
              ]
              spids: [-1 4443]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$dontDisableStatic'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  children: [
                                    (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$configureScript'))} 
                                      {(Lit_Other ']')}
                                    )
                                    (C {(grep)} {(-q)} {(enable-static)} 
                                      {(DQ ($ VSub_Name '$configureScript'))}
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:configureFlags)
                                  op: Equal
                                  rhs: {(DQ ('--disable-static ') ($ VSub_Name '$configureFlags'))}
                                  spids: [4495]
                                )
                              ]
                              spids: [4495]
                            )
                          ]
                          spids: [-1 4492]
                        )
                      ]
                      spids: [-1 4502]
                    )
                  ]
                  spids: [-1 4464]
                )
              ]
              spids: [-1 4505]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$configureScript'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:flagsArray)
                          op: Equal
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {($ VSub_Name '$configureFlags')}
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name configureFlagsArray>
                                        bracket_op: (WholeArray op_id:Lit_At)
                                        spids: [4536 4541]
                                      )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [4531]
                        )
                      ]
                      spids: [4529]
                    )
                    (C {(echoCmd)} {(SQ <'configure flags'>)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name flagsArray>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [4553 4558]
                          )
                        )
                      }
                    )
                    (C {($ VSub_Name '$configureScript')} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name flagsArray>
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [4569 4574]
                          )
                        )
                      }
                    )
                    (C {(unset)} {(flagsArray)})
                  ]
                  spids: [-1 4522]
                )
              ]
              else_action: [(C {(echo)} {(DQ ('no configure script, doing nothing'))})]
              spids: [4583 4593]
            )
            (C {(runHook)} {(postConfigure)})
          ]
          spids: [4227]
        )
      spids: [4223 4226]
    )
    (FuncDef
      name: buildPhase
      body: 
        (BraceGroup
          children: [
            (C {(runHook)} {(preBuild)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalAnd
                              left: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: {(DQ ($ VSub_Name '$makeFlags'))}
                                )
                              right: 
                                (LogicalNot
                                  child: 
                                    (LogicalOr
                                      left: 
                                        (BoolUnary
                                          op_id: BoolUnary_n
                                          child: {(DQ ($ VSub_Name '$makefile'))}
                                        )
                                      right: 
                                        (LogicalOr
                                          left: (BoolUnary op_id:BoolUnary_e child:{(Makefile)})
                                          right: 
                                            (LogicalOr
                                              left: (BoolUnary op_id:BoolUnary_e child:{(makefile)})
                                              right: 
                                                (BoolUnary
                                                  op_id: BoolUnary_e
                                                  child: 
                                                    {(GNUmakefile) (Lit_Other '[') (Lit_Other '[')}
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ ('no Makefile, doing nothing'))})]
                  spids: [-1 4665]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:makeFlags)
                      op: Equal
                      rhs: {(DQ ('SHELL=') ($ VSub_Name '$SHELL') (' ') ($ VSub_Name '$makeFlags'))}
                      spids: [4682]
                    )
                  ]
                  spids: [4682]
                )
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:flagsArray)
                      op: Equal
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {
                                (BracedVarSub
                                  token: <VSub_Name enableParallelBuilding>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VTest_ColonPlus
                                      arg_word: 
                                        {(-j) (${ VSub_Name NIX_BUILD_CORES) (' -l') 
                                          (${ VSub_Name NIX_BUILD_CORES)
                                        }
                                    )
                                  spids: [4703 4714]
                                )
                              }
                              {($ VSub_Name '$makeFlags')}
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name makeFlagsArray>
                                    bracket_op: (WholeArray op_id:Lit_At)
                                    spids: [4721 4726]
                                  )
                                )
                              }
                              {($ VSub_Name '$buildFlags')}
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name buildFlagsArray>
                                    bracket_op: (WholeArray op_id:Lit_At)
                                    spids: [4734 4739]
                                  )
                                )
                              }
                            ]
                          )
                        }
                      spids: [4698]
                    )
                  ]
                  spids: [4696]
                )
                (C {(echoCmd)} {(SQ <'build flags'>)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name flagsArray>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [4752 4757]
                      )
                    )
                  }
                )
                (C {(make)} 
                  {
                    (BracedVarSub
                      token: <VSub_Name makefile>
                      suffix_op: 
                        (StringUnary
                          op_id: VTest_ColonPlus
                          arg_word: {('-f ') ($ VSub_Name '$makefile')}
                        )
                      spids: [4763 4768]
                    )
                  } 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name flagsArray>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [4771 4776]
                      )
                    )
                  }
                )
                (C {(unset)} {(flagsArray)})
              ]
              spids: [4675 4785]
            )
            (C {(runHook)} {(postBuild)})
          ]
          spids: [4609]
        )
      spids: [4605 4608]
    )
    (FuncDef
      name: checkPhase
      body: 
        (BraceGroup
          children: [
            (C {(runHook)} {(preCheck)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:flagsArray)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (BracedVarSub
                              token: <VSub_Name enableParallelBuilding>
                              suffix_op: 
                                (StringUnary
                                  op_id: VTest_ColonPlus
                                  arg_word: 
                                    {(-j) (${ VSub_Name NIX_BUILD_CORES) (' -l') 
                                      (${ VSub_Name NIX_BUILD_CORES)
                                    }
                                )
                              spids: [4821 4832]
                            )
                          }
                          {($ VSub_Name '$makeFlags')}
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name makeFlagsArray>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [4839 4844]
                              )
                            )
                          }
                          {
                            (BracedVarSub
                              token: <VSub_Name checkFlags>
                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{('VERBOSE=y')})
                              spids: [4849 4853]
                            )
                          }
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name checkFlagsArray>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [4856 4861]
                              )
                            )
                          }
                          {
                            (BracedVarSub
                              token: <VSub_Name checkTarget>
                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(check)})
                              spids: [4864 4868]
                            )
                          }
                        ]
                      )
                    }
                  spids: [4816]
                )
              ]
              spids: [4814]
            )
            (C {(echoCmd)} {(SQ <'check flags'>)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name flagsArray>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [4880 4885]
                  )
                )
              }
            )
            (C {(make)} 
              {
                (BracedVarSub
                  token: <VSub_Name makefile>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonPlus
                      arg_word: {('-f ') ($ VSub_Name '$makefile')}
                    )
                  spids: [4891 4896]
                )
              } 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name flagsArray>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [4899 4904]
                  )
                )
              }
            )
            (C {(unset)} {(flagsArray)})
            (C {(runHook)} {(postCheck)})
          ]
          spids: [4801]
        )
      spids: [4797 4800]
    )
    (FuncDef
      name: installPhase
      body: 
        (BraceGroup
          children: [
            (C {(runHook)} {(preInstall)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$prefix'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$prefix'))})]
                  spids: [-1 4948]
                )
              ]
              spids: [-1 4960]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:installTargets)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name installTargets>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(install)})
                          spids: [4966 4970]
                        )
                      )
                    }
                  spids: [4964]
                )
              ]
              spids: [4964]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:flagsArray)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {($ VSub_Name '$installTargets')}
                          {($ VSub_Name '$makeFlags')}
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name makeFlagsArray>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [4991 4996]
                              )
                            )
                          }
                          {($ VSub_Name '$installFlags')}
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name installFlagsArray>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [5004 5009]
                              )
                            )
                          }
                        ]
                      )
                    }
                  spids: [4981]
                )
              ]
              spids: [4979]
            )
            (C {(echoCmd)} {(SQ <'install flags'>)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name flagsArray>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [5022 5027]
                  )
                )
              }
            )
            (C {(make)} 
              {
                (BracedVarSub
                  token: <VSub_Name makefile>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonPlus
                      arg_word: {('-f ') ($ VSub_Name '$makefile')}
                    )
                  spids: [5033 5038]
                )
              } 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name flagsArray>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [5041 5046]
                  )
                )
              }
            )
            (C {(unset)} {(flagsArray)})
            (C {(runHook)} {(postInstall)})
          ]
          spids: [4926]
        )
      spids: [4922 4925]
    )
    (FuncDef
      name: fixupPhase
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: output
              iter_words: [{($ VSub_Name '$outputs')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-e)} 
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name output>
                                        prefix_op: VSub_Bang
                                        spids: [5103 5106]
                                      )
                                    )
                                  } {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: 
                                (C {(chmod)} {(-R)} {(u) (Lit_Other '+') (w)} 
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name output>
                                        prefix_op: VSub_Bang
                                        spids: [5123 5126]
                                      )
                                    )
                                  }
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 5112]
                        )
                      ]
                      spids: [-1 5130]
                    )
                  ]
                  spids: [5093 5133]
                )
              spids: [5089 5091]
            )
            (C {(runHook)} {(preFixup)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:output) op:Equal spids:[5149])]
              spids: [5147]
            )
            (ForEach
              iter_name: output
              iter_words: [{($ VSub_Name '$outputs')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(runHook)} {(fixupOutput)}]
                      more_env: [
                        (env_pair
                          name: prefix
                          val: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name output>
                                  prefix_op: VSub_Bang
                                  spids: [5166 5169]
                                )
                              )
                            }
                          spids: [5164]
                        )
                      ]
                    )
                  ]
                  spids: [5161 5177]
                )
              spids: [5157 5159]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$crossConfig'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:propagated)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$propagatedNativeBuildInputs'))}
                          spids: [5209]
                        )
                      ]
                      spids: [5207]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$propagatedBuildInputs'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:propagated)
                                  op: PlusEqual
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name propagated>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_ColonPlus
                                              arg_word: {(' ')}
                                            )
                                          spids: [5233 5237]
                                        ) ($ VSub_Name '$propagatedBuildInputs')
                                      )
                                    }
                                  spids: [5231]
                                )
                              ]
                              spids: [5231]
                            )
                          ]
                          spids: [-1 5228]
                        )
                      ]
                      spids: [-1 5242]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$propagated'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(mkdir)} {(-p)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name outputDev>
                                    prefix_op: VSub_Bang
                                    spids: [5266 5269]
                                  ) (/nix-support)
                                )
                              }
                            )
                            (SimpleCommand
                              words: [{(printWords)} {($ VSub_Name '$propagated')}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: -1
                                  arg_word: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name outputDev>
                                          prefix_op: VSub_Bang
                                          spids: [5285 5288]
                                        ) (/nix-support/propagated-native-build-inputs)
                                      )
                                    }
                                  spids: [5282]
                                )
                              ]
                            )
                          ]
                          spids: [-1 5258]
                        )
                      ]
                      spids: [-1 5293]
                    )
                  ]
                  spids: [-1 5200]
                )
              ]
              else_action: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$propagatedBuildInputs'))} 
                              {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(mkdir)} {(-p)} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name outputDev>
                                prefix_op: VSub_Bang
                                spids: [5320 5323]
                              ) (/nix-support)
                            )
                          }
                        )
                        (SimpleCommand
                          words: [{(printWords)} {($ VSub_Name '$propagatedBuildInputs')}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name outputDev>
                                      prefix_op: VSub_Bang
                                      spids: [5339 5342]
                                    ) (/nix-support/propagated-build-inputs)
                                  )
                                }
                              spids: [5336]
                            )
                          ]
                        )
                      ]
                      spids: [-1 5312]
                    )
                  ]
                  spids: [-1 5347]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(-n)} 
                              {(DQ ($ VSub_Name '$propagatedNativeBuildInputs'))} {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(mkdir)} {(-p)} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name outputDev>
                                prefix_op: VSub_Bang
                                spids: [5372 5375]
                              ) (/nix-support)
                            )
                          }
                        )
                        (SimpleCommand
                          words: [{(printWords)} {($ VSub_Name '$propagatedNativeBuildInputs')}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name outputDev>
                                      prefix_op: VSub_Bang
                                      spids: [5391 5394]
                                    ) (/nix-support/propagated-native-build-inputs)
                                  )
                                }
                              spids: [5388]
                            )
                          ]
                        )
                      ]
                      spids: [-1 5364]
                    )
                  ]
                  spids: [-1 5399]
                )
              ]
              spids: [5296 5402]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$setupHook'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(mkdir)} {(-p)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name outputDev>
                            prefix_op: VSub_Bang
                            spids: [5427 5430]
                          ) (/nix-support)
                        )
                      }
                    )
                    (C {(substituteAll)} {(DQ ($ VSub_Name '$setupHook'))} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name outputDev>
                            prefix_op: VSub_Bang
                            spids: [5442 5445]
                          ) (/nix-support/setup-hook)
                        )
                      }
                    )
                  ]
                  spids: [-1 5419]
                )
              ]
              spids: [-1 5450]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$propagatedUserEnvPkgs'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(mkdir)} {(-p)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name outputBin>
                            prefix_op: VSub_Bang
                            spids: [5480 5483]
                          ) (/nix-support)
                        )
                      }
                    )
                    (SimpleCommand
                      words: [{(printWords)} {($ VSub_Name '$propagatedUserEnvPkgs')}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name outputBin>
                                  prefix_op: VSub_Bang
                                  spids: [5499 5502]
                                ) (/nix-support/propagated-user-env-packages)
                              )
                            }
                          spids: [5496]
                        )
                      ]
                    )
                  ]
                  spids: [-1 5472]
                )
              ]
              spids: [-1 5507]
            )
            (C {(runHook)} {(postFixup)})
          ]
          spids: [5077]
        )
      spids: [5073 5076]
    )
    (FuncDef
      name: installCheckPhase
      body: 
        (BraceGroup
          children: [
            (C {(runHook)} {(preInstallCheck)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:flagsArray)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (BracedVarSub
                              token: <VSub_Name enableParallelBuilding>
                              suffix_op: 
                                (StringUnary
                                  op_id: VTest_ColonPlus
                                  arg_word: 
                                    {(-j) (${ VSub_Name NIX_BUILD_CORES) (' -l') 
                                      (${ VSub_Name NIX_BUILD_CORES)
                                    }
                                )
                              spids: [5543 5554]
                            )
                          }
                          {($ VSub_Name '$makeFlags')}
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name makeFlagsArray>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [5561 5566]
                              )
                            )
                          }
                          {($ VSub_Name '$installCheckFlags')}
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name installCheckFlagsArray>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [5574 5579]
                              )
                            )
                          }
                          {
                            (BracedVarSub
                              token: <VSub_Name installCheckTarget>
                              suffix_op: 
                                (StringUnary
                                  op_id: VTest_ColonHyphen
                                  arg_word: {(installcheck)}
                                )
                              spids: [5582 5586]
                            )
                          }
                        ]
                      )
                    }
                  spids: [5538]
                )
              ]
              spids: [5536]
            )
            (C {(echoCmd)} {(SQ <'installcheck flags'>)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name flagsArray>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [5598 5603]
                  )
                )
              }
            )
            (C {(make)} 
              {
                (BracedVarSub
                  token: <VSub_Name makefile>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonPlus
                      arg_word: {('-f ') ($ VSub_Name '$makefile')}
                    )
                  spids: [5609 5614]
                )
              } 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name flagsArray>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [5617 5622]
                  )
                )
              }
            )
            (C {(unset)} {(flagsArray)})
            (C {(runHook)} {(postInstallCheck)})
          ]
          spids: [5523]
        )
      spids: [5519 5522]
    )
    (FuncDef
      name: distPhase
      body: 
        (BraceGroup
          children: [
            (C {(runHook)} {(preDist)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:flagsArray)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {($ VSub_Name '$distFlags')}
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name distFlagsArray>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [5664 5669]
                              )
                            )
                          }
                          {
                            (BracedVarSub
                              token: <VSub_Name distTarget>
                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(dist)})
                              spids: [5672 5676]
                            )
                          }
                        ]
                      )
                    }
                  spids: [5659]
                )
              ]
              spids: [5657]
            )
            (C {(echo)} {(SQ <'dist flags: %q'>)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name flagsArray>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [5688 5693]
                  )
                )
              }
            )
            (C {(make)} 
              {
                (BracedVarSub
                  token: <VSub_Name makefile>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonPlus
                      arg_word: {('-f ') ($ VSub_Name '$makefile')}
                    )
                  spids: [5699 5704]
                )
              } 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name flagsArray>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [5707 5712]
                  )
                )
              }
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$dontCopyDist'))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(1)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$out') (/tarballs))})
                    (C {(cp)} {(-pvd)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name tarballs>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{('*.tar.gz')})
                          spids: [5763 5767]
                        )
                      } {(DQ ($ VSub_Name '$out') (/tarballs))}
                    )
                  ]
                  spids: [-1 5733]
                )
              ]
              spids: [-1 5775]
            )
            (C {(runHook)} {(postDist)})
          ]
          spids: [5644]
        )
      spids: [5640 5643]
    )
    (FuncDef
      name: showPhaseHeader
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:phase)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [5796]
                )
              ]
              spids: [5794]
            )
            (Case
              to_match: {(DQ ($ VSub_Name '$phase'))}
              arms: [
                (case_arm
                  pat_list: [{(unpackPhase)}]
                  action: [(C {(header)} {(DQ ('unpacking sources'))})]
                  spids: [5811 5812 5819 -1]
                )
                (case_arm
                  pat_list: [{(patchPhase)}]
                  action: [(C {(header)} {(DQ ('patching sources'))})]
                  spids: [5822 5823 5830 -1]
                )
                (case_arm
                  pat_list: [{(configurePhase)}]
                  action: [(C {(header)} {(DQ (configuring))})]
                  spids: [5833 5834 5841 -1]
                )
                (case_arm
                  pat_list: [{(buildPhase)}]
                  action: [(C {(header)} {(DQ (building))})]
                  spids: [5844 5845 5852 -1]
                )
                (case_arm
                  pat_list: [{(checkPhase)}]
                  action: [(C {(header)} {(DQ ('running tests'))})]
                  spids: [5855 5856 5863 -1]
                )
                (case_arm
                  pat_list: [{(installPhase)}]
                  action: [(C {(header)} {(DQ (installing))})]
                  spids: [5866 5867 5874 -1]
                )
                (case_arm
                  pat_list: [{(fixupPhase)}]
                  action: [(C {(header)} {(DQ ('post-installation fixup'))})]
                  spids: [5877 5878 5885 -1]
                )
                (case_arm
                  pat_list: [{(installCheckPhase)}]
                  action: [(C {(header)} {(DQ ('running install tests'))})]
                  spids: [5888 5889 5896 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(header)} {(DQ ($ VSub_Name '$phase'))})]
                  spids: [5899 5900 5907 -1]
                )
              ]
              spids: [5802 5808 5910]
            )
          ]
          spids: [5791]
        )
      spids: [5787 5790]
    )
    (FuncDef
      name: genericBuild
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$buildCommandPath'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(.)} {(DQ ($ VSub_Name '$buildCommandPath'))})
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [-1 5936]
                )
              ]
              spids: [-1 5949]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$buildCommand'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eval)} {(DQ ($ VSub_Name '$buildCommand'))})
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [-1 5965]
                )
              ]
              spids: [-1 5978]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$phases'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:phases)
                              op: Equal
                              rhs: 
                                {
                                  (DQ ($ VSub_Name '$prePhases') (' unpackPhase patchPhase ') 
                                    ($ VSub_Name '$preConfigurePhases') (' ') ('            configurePhase ') ($ VSub_Name '$preBuildPhases') (' buildPhase checkPhase ') 
                                    ('            ') ($ VSub_Name '$preInstallPhases') (' installPhase ') ($ VSub_Name '$preFixupPhases') 
                                    (' fixupPhase installCheckPhase ') ('            ') ($ VSub_Name '$preDistPhases') (' distPhase ') ($ VSub_Name '$postPhases')
                                  )
                                }
                              spids: [5998]
                            )
                          ]
                          spids: [5998]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 5995]
                )
              ]
              spids: [-1 6023]
            )
            (ForEach
              iter_name: curPhase
              iter_words: [{($ VSub_Name '$phases')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalAnd
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobEqual
                                          left: {(DQ ($ VSub_Name '$curPhase'))}
                                          right: {(buildPhase)}
                                        )
                                      right: 
                                        (BoolUnary
                                          op_id: BoolUnary_n
                                          child: {(DQ ($ VSub_Name '$dontBuild'))}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Continue continue>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 6062]
                        )
                      ]
                      spids: [-1 6067]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalAnd
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobEqual
                                          left: {(DQ ($ VSub_Name '$curPhase'))}
                                          right: {(checkPhase)}
                                        )
                                      right: 
                                        (BoolUnary
                                          op_id: BoolUnary_z
                                          child: {(DQ ($ VSub_Name '$doCheck'))}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Continue continue>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 6093]
                        )
                      ]
                      spids: [-1 6098]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalAnd
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobEqual
                                          left: {(DQ ($ VSub_Name '$curPhase'))}
                                          right: {(installPhase)}
                                        )
                                      right: 
                                        (BoolUnary
                                          op_id: BoolUnary_n
                                          child: {(DQ ($ VSub_Name '$dontInstall'))}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Continue continue>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 6124]
                        )
                      ]
                      spids: [-1 6129]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalAnd
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobEqual
                                          left: {(DQ ($ VSub_Name '$curPhase'))}
                                          right: {(fixupPhase)}
                                        )
                                      right: 
                                        (BoolUnary
                                          op_id: BoolUnary_n
                                          child: {(DQ ($ VSub_Name '$dontFixup'))}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Continue continue>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 6155]
                        )
                      ]
                      spids: [-1 6160]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalAnd
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobEqual
                                          left: {(DQ ($ VSub_Name '$curPhase'))}
                                          right: {(installCheckPhase)}
                                        )
                                      right: 
                                        (BoolUnary
                                          op_id: BoolUnary_z
                                          child: {(DQ ($ VSub_Name '$doInstallCheck'))}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Continue continue>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 6186]
                        )
                      ]
                      spids: [-1 6191]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalAnd
                                      left: 
                                        (BoolBinary
                                          op_id: BoolBinary_GlobEqual
                                          left: {(DQ ($ VSub_Name '$curPhase'))}
                                          right: {(distPhase)}
                                        )
                                      right: 
                                        (BoolUnary
                                          op_id: BoolUnary_z
                                          child: {(DQ ($ VSub_Name '$doDist'))}
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Continue continue>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 6217]
                        )
                      ]
                      spids: [-1 6222]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: {(DQ ($ VSub_Name '$tracePhases'))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)})
                            (C {(echo)} 
                              {
                                (DQ ('@ phase-started ') ($ VSub_Name '$out') (' ') 
                                  ($ VSub_Name '$curPhase')
                                )
                              }
                            )
                          ]
                          spids: [-1 6239]
                        )
                      ]
                      spids: [-1 6255]
                    )
                    (C {(showPhaseHeader)} {(DQ ($ VSub_Name '$curPhase'))})
                    (C {(dumpVars)})
                    (C {(eval)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name curPhase>
                            prefix_op: VSub_Bang
                            suffix_op: 
                              (StringUnary
                                op_id: VTest_ColonHyphen
                                arg_word: {($ VSub_Name '$curPhase')}
                              )
                            spids: [6281 6286]
                          )
                        )
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$curPhase'))} {(Lit_Other '=')} 
                                  {(unpackPhase)} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(cd)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name sourceRoot>
                                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(.)})
                                    spids: [6312 6316]
                                  )
                                )
                              }
                            )
                          ]
                          spids: [-1 6306]
                        )
                      ]
                      spids: [-1 6320]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$tracePhases'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)})
                            (C {(echo)} 
                              {
                                (DQ ('@ phase-succeeded ') ($ VSub_Name '$out') (' ') 
                                  ($ VSub_Name '$curPhase')
                                )
                              }
                            )
                          ]
                          spids: [-1 6337]
                        )
                      ]
                      spids: [-1 6353]
                    )
                  ]
                  spids: [6036 6356]
                )
              spids: [6032 6034]
            )
          ]
          spids: [5920]
        )
      spids: [5916 5919]
    )
    (C {(runHook)} {(postHook)})
    (C {(runHook)} {(userHook)})
    (C {(dumpVars)})
  ]
)