(CommandList
  children: [
    (C {(Lit_Other ':')} 
      {
        (BracedVarSub
          token: <VSub_Name srcdir>
          suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(.)})
          spids: [5 9]
        )
      }
    )
    (CommandList
      children: [
        (Sentence
          child: (C {(.)} {(DQ ($ VSub_Name '$srcdir') (/init.sh))})
          terminator: <Op_Semi ';'>
        )
        (C {(path_prepend_)} {(.)})
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(Hello)} {(world)}]
      redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(in.tmp)})]
    )
    (SimpleCommand
      words: [{(echo)} {(world)}]
      redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(xout.tmp)})]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(0)} spids:[43])]
      spids: [43]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (CommandList
              children: [(Sentence child:(C {(test-closein)}) terminator:<Op_Semi ';'>) (C {(cat)})]
            )
          redirects: [
            (Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(in.tmp)})
            (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(out1.tmp)})
          ]
          spids: [49 54]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[66])]
          spids: [66]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(cmp)} {(out1.tmp)} {(in.tmp)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[77])]
          spids: [77]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Subshell
          child: 
            (CommandList
              children: [
                (Sentence
                  child: (C {(test-closein)} {(consume)})
                  terminator: <Op_Semi ';'>
                )
                (C {(cat)})
              ]
            )
          redirects: [
            (Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(in.tmp)})
            (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(out2.tmp)})
          ]
          spids: [81 88]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[100])]
          spids: [100]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(cmp)} {(out2.tmp)} {(xout.tmp)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[111])]
          spids: [111]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Pipeline
          children: [
            (SimpleCommand
              words: [{(cat)} {(in.tmp)}]
              redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
            )
            (C {(test-closein)})
          ]
          negated: F
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[131])]
          spids: [131]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Pipeline
          children: [
            (SimpleCommand
              words: [{(cat)} {(in.tmp)}]
              redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
            )
            (C {(test-closein)} {(consume)})
          ]
          negated: F
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[150])]
          spids: [150]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(test-closein)}]
          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(/dev/null)})]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[164])]
          spids: [164]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(test-closein)}]
          redirects: [(Redir op:<Redir_LessAnd '<&'> fd:16777215 arg_word:{(-)})]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[175])]
          spids: [175]
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(test-closein)} {(consume)}]
          redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(/dev/null)})]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[191])]
          spids: [191]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (SimpleCommand
          words: [{(test-closein)} {(consume)} {(close)}]
          redirects: [
            (Redir op:<Redir_LessAnd '<&'> fd:16777215 arg_word:{(-)})
            (Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[212])]
          spids: [212]
        )
      ]
    )
    (C {(Exit)} {($ VSub_Name '$fail')})
  ]
)