(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_)} {(touch)})
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(ln)} {(-s)} {(nowhere)} {(dangling)}) (C {(framework_failure_)})]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(ln)} {(-s)} {(loop)} {(loop)}) (C {(framework_failure_)})]
    )
    (AndOr ops:[Op_DPipe] children:[(C {(touch)} {(file)}) (C {(framework_failure_)})])
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(ln)} {(-s)} {(file)} {(link1)}) (C {(framework_failure_)})]
    )
    (AndOr ops:[Op_DPipe] children:[(C {(mkdir)} {(dir)}) (C {(framework_failure_)})])
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(ln)} {(-s)} {(dir)} {(link2)}) (C {(framework_failure_)})]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(touch)} {(no-file/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[143])]
          spids: [143]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(touch)} {(file/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[152])]
          spids: [152]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(touch)} {(dangling/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[161])]
          spids: [161]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(touch)} {(loop/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[170])]
          spids: [170]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(touch)} {(link1/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[179])]
          spids: [179]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(touch)} {(dir/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[188])]
          spids: [188]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(touch)} {(-c)} {(no-file/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[203])]
          spids: [203]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(touch)} {(-c)} {(file/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[214])]
          spids: [214]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(touch)} {(-c)} {(dangling/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[225])]
          spids: [225]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(touch)} {(-c)} {(loop/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[236])]
          spids: [236]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(touch)} {(-c)} {(link1/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[247])]
          spids: [247]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(touch)} {(-c)} {(dir/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[258])]
          spids: [258]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(no-file)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[269])]
          spids: [269]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(test)} {(-f)} {(nowhere)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[280])]
          spids: [280]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(touch)} {(-d)} {(2009-10-10)} {(-h)} {(link2/)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[305])]
          spids: [305]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(touch)} {(-h)} {(-r)} {(link2/)} {(file)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[320])]
          spids: [320]
        )
      ]
    )
    (Case
      to_match: 
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [(C {(stat)} {(--format) (Lit_Other '=') (Lit_Other '%') (y)} {(dir)})]
              )
            left_token: <Left_CommandSub '$('>
            spids: [325 334]
          )
        }
      arms: [
        (case_arm pat_list:[{(2009-10-10) (Lit_Other '*')}] spids:[339 341 343 16777215])
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[349])]
              spids: [349]
            )
          ]
          spids: [346 347 352 16777215]
        )
      ]
      spids: [323 336 354]
    )
    (Case
      to_match: 
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [(C {(stat)} {(--format) (Lit_Other '=') (Lit_Other '%') (y)} {(link2)})]
              )
            left_token: <Left_CommandSub '$('>
            spids: [358 367]
          )
        }
      arms: [
        (case_arm
          pat_list: [{(2009-10-10) (Lit_Other '*')}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[376])]
              spids: [376]
            )
          ]
          spids: [372 374 379 16777215]
        )
      ]
      spids: [356 369 381]
    )
    (Case
      to_match: 
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [(C {(stat)} {(--format) (Lit_Other '=') (Lit_Other '%') (y)} {(file)})]
              )
            left_token: <Left_CommandSub '$('>
            spids: [385 394]
          )
        }
      arms: [
        (case_arm pat_list:[{(2009-10-10) (Lit_Other '*')}] spids:[399 401 403 16777215])
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[409])]
              spids: [409]
            )
          ]
          spids: [406 407 412 16777215]
        )
      ]
      spids: [383 396 414]
    )
    (C {(Exit)} {($ VSub_Name '$fail')})
  ]
)