(CommandList
  children: [
    (Sentence
      child: 
        (C {(.)} 
          {
            (DQ 
              (BracedVarSub
                token: <VSub_Name srcdir>
                suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(.)})
                spids: [50 54]
              ) (/tests/init.sh)
            )
          }
        )
      terminator: <Op_Semi ';'>
    )
    (C {(path_prepend_)} {(./src)})
    (C {(print_ver_)} {(rm)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:p)
          op: Equal
          rhs: {($ VSub_Name '$abs_top_builddir')}
          spids: [68]
        )
      ]
      spids: [68]
    )
    (C {(touch)} {(a)})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(cp)} {(a)} {(b)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[89])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[94])]
          spids: [94]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {(b)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[105])]
          spids: [105]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(chmod)} {(o-w)} {(.)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[114])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[119])]
          spids: [119]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(ln)} {(a)} {(c)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[128])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[133])]
          spids: [133]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(rm)} {(c)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[140])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[145])]
          spids: [145]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(mkdir)} {(d)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[152])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[157])]
          spids: [157]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(mv)} {(d)} {(e)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[166])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[171])]
          spids: [171]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(rmdir)} {(e)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[178])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[183])]
          spids: [183]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(touch)} {(e)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[190])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[195])]
          spids: [195]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(sleep)} {(0)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[202])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[207])]
          spids: [207]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(DQ ($ VSub_Name '$p') (/src/true))}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[215])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[220])]
          spids: [220]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(DQ ($ VSub_Name '$p') (/src/printf))} {(SQ )}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[231])]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[236])]
          spids: [236]
        )
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  ops: [Op_DAmp]
                  children: [
                    (SimpleCommand
                      words: [{(DQ ($ VSub_Name '$p') (/src/test))} {(-w)} {(/dev/stdout)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(/dev/null)}
                          spids: [260]
                        )
                      ]
                    )
                    (SimpleCommand
                      words: [
                        {(DQ ($ VSub_Name '$p') (/src/test))}
                        {(KW_Bang '!')}
                        {(-w)}
                        {(/dev/stdout)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(-)} spids:[277])]
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (SimpleCommand
                  words: [{(DQ ($ VSub_Name '$p') (/src/printf))} {(SQ <foo>)}]
                  redirects: [
                    (Redir
                      op_id: Redir_GreatAnd
                      fd: 16777215
                      arg_word: {(-)}
                      spids: [293]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [296]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[301])]
                  spids: [301]
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (SimpleCommand
                  words: [{(cp)} {(--verbose)} {(a)} {(b)}]
                  redirects: [
                    (Redir
                      op_id: Redir_GreatAnd
                      fd: 16777215
                      arg_word: {(-)}
                      spids: [313]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [316]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[321])]
                  spids: [321]
                )
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(rm)} {(-Rf)} 
                  {(tmpfile-) (Lit_Other '?') (Lit_Other '?') (Lit_Other '?') (Lit_Other '?') 
                    (Lit_Other '?') (Lit_Other '?')
                  }
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[339])]
                  spids: [339]
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (SimpleCommand
                  words: [{(mktemp)} {(tmpfile-XXXXXX)}]
                  redirects: [
                    (Redir
                      op_id: Redir_GreatAnd
                      fd: 16777215
                      arg_word: {(-)}
                      spids: [347]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [350]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[355])]
                  spids: [355]
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (SimpleCommand
                  words: [{(mktemp)} {(tmpfile-XXXXXX)} {(-q)}]
                  redirects: [
                    (Redir
                      op_id: Redir_GreatAnd
                      fd: 16777215
                      arg_word: {(-)}
                      spids: [365]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [368]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[373])]
                  spids: [373]
                )
              ]
            )
            (Case
              to_match: 
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(echo)} 
                            {(tmpfile-) (Lit_Other '?') (Lit_Other '?') (Lit_Other '?') (Lit_Other '?') 
                              (Lit_Other '?') (Lit_Other '?')
                            }
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [379 389]
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(SQ <'tmpfile-??????'>)}]
                  spids: [394 396 398 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[403])]
                      spids: [403]
                    )
                  ]
                  spids: [400 401 406 16777215]
                )
              ]
              spids: [377 391 408]
            )
          ]
          spids: [16777215 281]
        )
      ]
      spids: [16777215 410]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  ops: [Op_DAmp]
                  children: [(C {(test)} {(-w)} {(/dev/full)}) (C {(test)} {(-c)} {(/dev/full)})]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (SimpleCommand
                  words: [{(DQ ($ VSub_Name '$p') (/src/printf))} {(SQ <foo>)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/full)}
                      spids: [445]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [448]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[453])]
                  spids: [453]
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (SimpleCommand
                  words: [{(cp)} {(--verbose)} {(a)} {(b)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/full)}
                      spids: [465]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [468]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[473])]
                  spids: [473]
                )
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(rm)} {(-Rf)} 
                  {(tmpdir-) (Lit_Other '?') (Lit_Other '?') (Lit_Other '?') (Lit_Other '?') 
                    (Lit_Other '?') (Lit_Other '?')
                  }
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[491])]
                  spids: [491]
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (SimpleCommand
                  words: [{(mktemp)} {(-d)} {(tmpdir-XXXXXX)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/full)}
                      spids: [501]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [504]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[509])]
                  spids: [509]
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (SimpleCommand
                  words: [{(mktemp)} {(-d)} {(-q)} {(tmpdir-XXXXXX)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/full)}
                      spids: [521]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [524]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[529])]
                  spids: [529]
                )
              ]
            )
            (Case
              to_match: 
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(echo)} 
                            {(tmpfile-) (Lit_Other '?') (Lit_Other '?') (Lit_Other '?') (Lit_Other '?') 
                              (Lit_Other '?') (Lit_Other '?')
                            }
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [535 545]
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(SQ <'tmpfile-??????'>)}]
                  spids: [550 552 554 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[559])]
                      spids: [559]
                    )
                  ]
                  spids: [556 557 562 16777215]
                )
              ]
              spids: [533 547 564]
            )
          ]
          spids: [16777215 433]
        )
      ]
      spids: [16777215 566]
    )
    (C {(Exit)} {($ VSub_Name '$fail')})
  ]
)