(command.CommandList
  children: [
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {(.)} 
              {
                (DQ 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:srcdir span_id:7)
                    suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{(.)})
                  ) (/init.sh)
                )
              }
            )
          terminator: (Token id:Id.Op_Semi val:';' span_id:13)
        )
        (C {(path_prepend_)} {(.)})
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fail) op:assign_op.Equal rhs:{(0)} spids:[20])]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(test-readtokens)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [28]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(echo)} {(a) (Id.Lit_Other ':') (b) (Id.Lit_Other ':') (c) (Id.Lit_Other ':')}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:44)
              fd: -1
              arg_word: {(exp)}
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [50]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {(printf)} {(a) (Id.Lit_Other ':') (b) (Id.Lit_Other ':') (c)})
            (command.Simple
              words: [{(test-readtokens)} {(Id.Lit_Other ':')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:67)
                  fd: -1
                  arg_word: {(out)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:71)
                  fd: 2
                  arg_word: {(1)}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [76]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(compare)} {(exp)} {(out)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [87]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(echo)} {(a) (Id.Lit_Other ':') (b) (Id.Lit_Other ':') (c) (Id.Lit_Other ':')}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:103)
              fd: -1
              arg_word: {(exp)}
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [109]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'a\\0b\\0c' span_id:115))})
            (command.Simple
              words: [{(test-readtokens)} {(SQ (Token id:Id.Lit_Chars val:'\\0' span_id:123))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:126)
                  fd: -1
                  arg_word: {(out)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:130)
                  fd: 2
                  arg_word: {(1)}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [135]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(compare)} {(exp)} {(out)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [146]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(echo)} {(a) (Id.Lit_Other ':') (b) (Id.Lit_Other ':') (c) (Id.Lit_Other ':')}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:162)
              fd: -1
              arg_word: {(exp)}
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [168]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {(printf)} 
              {(a) (Id.Lit_Other ':') (-) (Id.Lit_Other ':') (b-) (Id.Lit_Other ':') (c) (Id.Lit_Other ':') 
                (Id.Lit_Other ':')
              }
            )
            (command.Simple
              words: [{(test-readtokens)} {(Id.Lit_Other ':') (-)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:190)
                  fd: -1
                  arg_word: {(out)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:194)
                  fd: 2
                  arg_word: {(1)}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [199]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(compare)} {(exp)} {(out)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [210]
            )
          ]
        )
      ]
    )
    (C {(Exit)} {($ Id.VSub_DollarName '$fail')})
  ]
)