(CommandList
  children: [
    (Sentence
      child: 
        (C {(.)} 
          {
            (DQ 
              (BracedVarSub
                token: <VSub_Name srcdir>
                suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(.)})
                spids: [47 51]
              ) (/tests/init.sh)
            )
          }
        )
      terminator: <Op_Semi ';'>
    )
    (C {(path_prepend_)} {(./src)})
    (C {(print_ver_)} {(cp)} {(mv)})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {(old)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(old)} spids:[71])]
        )
        (C {(framework_failure_)})
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(touch)} {(-d)} {(yesterday)} {(old)}) (C {(framework_failure_)})]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {(new)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(new)} spids:[95])]
        )
        (C {(framework_failure_)})
      ]
    )
    (ForEach
      iter_name: interactive
      iter_words: [{(SQ )} {(-i)}]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (ForEach
              iter_name: cp_or_mv
              iter_words: [{(cp)} {(mv)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (SimpleCommand
                          words: [
                            {($ VSub_Name '$cp_or_mv')}
                            {($ VSub_Name '$interactive')}
                            {(--update)}
                            {(old)}
                            {(new)}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Less
                              fd: 16777215
                              arg_word: {(/dev/null)}
                              spids: [156]
                            )
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(out)}
                              spids: [160]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [164]
                            )
                          ]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:fail)
                              op: Equal
                              rhs: {(1)}
                              spids: [169]
                            )
                          ]
                          spids: [169]
                        )
                      ]
                    )
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {(-s)} {(out)})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:fail)
                              op: Equal
                              rhs: {(1)}
                              spids: [181]
                            )
                          ]
                          spids: [181]
                        )
                      ]
                    )
                    (Case
                      to_match: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(cat)} {(new)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [188 192]
                            )
                          )
                        }
                      arms: [
                        (case_arm
                          pat_list: [{(new)}]
                          spids: [197 198 200 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:fail)
                                  op: Equal
                                  rhs: {(1)}
                                  spids: [205]
                                )
                              ]
                              spids: [205]
                            )
                          ]
                          spids: [202 203 208 16777215]
                        )
                      ]
                      spids: [185 195 210]
                    )
                    (Case
                      to_match: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: (CommandList children:[(C {(cat)} {(old)})])
                              left_token: <Left_CommandSub '$('>
                              spids: [216 220]
                            )
                          )
                        }
                      arms: [
                        (case_arm
                          pat_list: [{(old)}]
                          spids: [225 226 228 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:fail)
                                  op: Equal
                                  rhs: {(1)}
                                  spids: [233]
                                )
                              ]
                              spids: [233]
                            )
                          ]
                          spids: [230 231 236 16777215]
                        )
                      ]
                      spids: [213 223 238]
                    )
                  ]
                  spids: [131 241]
                )
              spids: [125 129]
            )
          ]
          spids: [117 243]
        )
      spids: [110 115]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(mv)} {(--update)} {(new)} {(old)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[259])]
          spids: [259]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(new)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[270])]
          spids: [270]
        )
      ]
    )
    (Case
      to_match: 
        {
          (DQ 
            (CommandSubPart
              command_list: (CommandList children:[(C {(cat)} {(old)})])
              left_token: <Left_CommandSub '$('>
              spids: [276 280]
            )
          )
        }
      arms: [
        (case_arm pat_list:[{(new)}] spids:[285 286 288 16777215])
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[293])]
              spids: [293]
            )
          ]
          spids: [290 291 296 16777215]
        )
      ]
      spids: [273 283 298]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {(old)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(old)} spids:[308])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[314])]
          spids: [314]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(touch)} {(-d)} {(yesterday)} {(old)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[327])]
          spids: [327]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {(new)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(new)} spids:[334])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[340])]
          spids: [340]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(cp)} {(--update)} {(new)} {(old)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[357])]
          spids: [357]
        )
      ]
    )
    (Case
      to_match: 
        {
          (DQ 
            (CommandSubPart
              command_list: (CommandList children:[(C {(cat)} {(old)})])
              left_token: <Left_CommandSub '$('>
              spids: [363 367]
            )
          )
        }
      arms: [
        (case_arm pat_list:[{(new)}] spids:[372 373 375 16777215])
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[380])]
              spids: [380]
            )
          ]
          spids: [377 378 383 16777215]
        )
      ]
      spids: [360 370 385]
    )
    (Case
      to_match: 
        {
          (DQ 
            (CommandSubPart
              command_list: (CommandList children:[(C {(cat)} {(new)})])
              left_token: <Left_CommandSub '$('>
              spids: [390 394]
            )
          )
        }
      arms: [
        (case_arm pat_list:[{(new)}] spids:[399 400 402 16777215])
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[407])]
              spids: [407]
            )
          ]
          spids: [404 405 410 16777215]
        )
      ]
      spids: [387 397 412]
    )
    (C {(Exit)} {($ VSub_Name '$fail')})
  ]
)