(CommandList
  children: [
    (Sentence
      child: 
        (C {(.)} 
          {
            (DQ 
              (BracedVarSub
                token: <VSub_Name srcdir>
                suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(.)})
                spids: [53 57]
              ) (/tests/init.sh)
            )
          }
        )
      terminator: <Op_Semi ';'>
    )
    (C {(path_prepend_)} {(./src)})
    (C {(print_ver_)} {(cp)} {(mv)} {(ln)})
    (C {(skip_if_root_)})
    (AndOr ops:[Op_DPipe] children:[(C {(mkdir)} {(a)} {(b)} {(c)}) (C {(framework_failure_)})])
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {(a)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(a/f)} spids:[94])]
        )
        (C {(framework_failure_)})
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {(b)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(b/f)} spids:[106])]
        )
        (C {(framework_failure_)})
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (SimpleCommand
          words: [{(cp)} {(a/f)} {(b/f)} {(c)}]
          redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[124])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[130])]
          spids: [130]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(a/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[141])]
          spids: [141]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(b/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[152])]
          spids: [152]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(c/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[163])]
          spids: [163]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} 
          {
            (DQ 
              (CommandSubPart
                command_list: (CommandList children:[(C {(cat)} {(c/f)})])
                left_token: <Left_CommandSub '$('>
                spids: [169 173]
              )
            )
          } {(Lit_Other '=')} {(a)}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[182])]
          spids: [182]
        )
      ]
    )
    (C {(rm)} {(-f)} {(c/f)})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(cp)} {(--backup) (Lit_Other '=') (numbered)} {(a/f)} {(b/f)} {(c)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[209])]
          spids: [209]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(a/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[220])]
          spids: [220]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(b/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[231])]
          spids: [231]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(c/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[242])]
          spids: [242]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(c/f.) (Lit_Tilde '~') (1) (Lit_Tilde '~')})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[256])]
          spids: [256]
        )
      ]
    )
    (C {(rm)} {(-f)} {(c/f) (Lit_Other '*')})
    (AndOr
      ops: [Op_DAmp]
      children: [
        (SimpleCommand
          words: [{(mv)} {(a/f)} {(b/f)} {(c)}]
          redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[275])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[281])]
          spids: [281]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(a/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[292])]
          spids: [292]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(b/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[303])]
          spids: [303]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(c/f)})
        (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 {(test)} 
          {
            (DQ 
              (CommandSubPart
                command_list: (CommandList children:[(C {(cat)} {(c/f)})])
                left_token: <Left_CommandSub '$('>
                spids: [320 324]
              )
            )
          } {(Lit_Other '=')} {(a)}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[333])]
          spids: [333]
        )
      ]
    )
    (C {(rm)} {(-f)} {(c/f) (Lit_Other '*')} {(b/f)})
    (C {(touch)} {(a/f)})
    (C {(ln)} {(a/f)} {(b/g)})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(mv)} {(a/f)} {(b/g)} {(c)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[375])]
          spids: [375]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(a/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[386])]
          spids: [386]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(b/g)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[397])]
          spids: [397]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(c/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[408])]
          spids: [408]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(c/g)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[419])]
          spids: [419]
        )
      ]
    )
    (C {(touch)} {(a/f)} {(b/f)} {(b/g)})
    (AndOr
      ops: [Op_DAmp]
      children: [
        (SimpleCommand
          words: [{(mv)} {(a/f)} {(b/f)} {(b/g)} {(c)}]
          redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[441])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[447])]
          spids: [447]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(a/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[458])]
          spids: [458]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(b/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[472])]
          spids: [472]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(b/g)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[486])]
          spids: [486]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(c/f)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[500])]
          spids: [500]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(c/g)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[511])]
          spids: [511]
        )
      ]
    )
    (C {(rm)} {(-f)} {(a/f)} {(b/f)} {(c/f)})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {(a)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(a/f)} spids:[533])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[539])]
          spids: [539]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {(b)}]
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(b/f)} spids:[546])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[552])]
          spids: [552]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (SimpleCommand
          words: [{(ln)} {(-f)} {(a/f)} {(b/f)} {(c)}]
          redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[565])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[571])]
          spids: [571]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} 
          {
            (CommandSubPart
              command_list: 
                (CommandList
                  children: [(C {(stat)} {(--format)} {(Lit_Other '%') (i)} {(a/f)})]
                )
              left_token: <Left_CommandSub '$('>
              spids: [579 588]
            )
          } {(Lit_Other '=')} 
          {
            (CommandSubPart
              command_list: 
                (CommandList
                  children: [(C {(stat)} {(--format)} {(Lit_Other '%') (i)} {(c/f)})]
                )
              left_token: <Left_CommandSub '$('>
              spids: [592 601]
            )
          }
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[605])]
          spids: [605]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} 
          {
            (CommandSubPart
              command_list: 
                (CommandList
                  children: [(C {(stat)} {(--format)} {(Lit_Other '%') (i)} {(b/f)})]
                )
              left_token: <Left_CommandSub '$('>
              spids: [613 622]
            )
          } {(Lit_Other '=')} 
          {
            (CommandSubPart
              command_list: 
                (CommandList
                  children: [(C {(stat)} {(--format)} {(Lit_Other '%') (i)} {(c/f)})]
                )
              left_token: <Left_CommandSub '$('>
              spids: [626 635]
            )
          }
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[639])]
          spids: [639]
        )
      ]
    )
    (C {(Exit)} {($ VSub_Name '$fail')})
  ]
)