(command.CommandList
  children: [
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<.>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name srcdir>
                    suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{<.>})
                  ) <'/tests/init.sh'>
                )
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<path_prepend_>} {<'./src'>})
      ]
    )
    (C {<print_ver_>} {<md5sum>})
    (command.ForEach
      iter_name: i
      iter_words: [{(SQ <a>)} {(SQ <' b'>)} {(SQ <'*c'>)} {(SQ <dd>)} {(SQ <' '>)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$i'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$i'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<md5sum>} {(DQ ($ Id.VSub_DollarName '$i'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<check.md5sum>}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.Simple
      words: [{<sed>} {(SQ <'s/  / /'>)} {<check.md5sum>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<check.md5>})]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<md5sum>} {<--strict>} {<-c>} {<check.md5sum>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [165]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<md5sum>} {<--strict>} {<-c>} {<check.md5>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [178]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Pipeline
          children: [
            (C {<tail>} {<-n> <Id.Lit_Other '+'> <2>} {<check.md5>})
            (C {<md5sum>} {<--strict>} {<-c>})
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [212]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<md5sum>} {<--tag>} {<--check>} {<'/dev/null'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [234]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<md5sum>} {<--tag>} {<--text>} {<'/dev/null'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [263]
            )
          ]
        )
      ]
    )
    (C {<rm>} {<check.md5>})
    (command.ForEach
      iter_name: i
      iter_words: [{(SQ <a>)} {(SQ <' b'>)} {(SQ <'*c'>)} {(SQ <dd>)} {(SQ <' '>)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$i'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$i'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<md5sum>} {<--tag>} {(DQ ($ Id.VSub_DollarName '$i'))}]
              redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<check.md5>})]
              do_fork: T
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<md5sum>} {<--strict>} {<-c>} {<check.md5>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [341]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:nl)
          op: assign_op.Equal
          rhs: {(SQ <'\n'>)}
          spids: [351]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tab)
          op: assign_op.Equal
          rhs: {(SQ <'\t'>)}
          spids: [356]
        )
      ]
    )
    (C {<rm>} {<check.md5>})
    (command.ForEach
      iter_name: i
      iter_words: [
        {(SQ <'a\\b'>)}
        {(SQ <'a\\'>)}
        {(DQ <a> (${ Id.VSub_Name nl) <b>)}
        {(DQ <a> (${ Id.VSub_Name tab) <b>)}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Simple
              words: [{<Id.Lit_Colon ':'>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$i'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<md5sum>} {<--tag>} {(DQ ($ Id.VSub_DollarName '$i'))}]
              redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<check.md5>})]
              do_fork: T
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<md5sum>} {<--strict>} {<-c>} {<check.md5>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [431]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ex_file)
          op: assign_op.Equal
          rhs: {(SQ <'test\n'> <'\\\\file'>)}
          spids: [441]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ex_output)
          op: assign_op.Equal
          rhs: {(SQ <'\\MD5 (test\\n\\\\\\\\file) = d41d8cd98f00b204e9800998ecf8427e'>)}
          spids: [447]
        )
      ]
    )
    (C {<touch>} {(DQ ($ Id.VSub_DollarName '$ex_file'))})
    (command.Simple
      words: [
        {<printf>}
        {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
        {(DQ ($ Id.VSub_DollarName '$ex_output'))}
      ]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})]
      do_fork: T
    )
    (command.Simple
      words: [{<md5sum>} {<--tag>} {(DQ ($ Id.VSub_DollarName '$ex_file'))}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<out>})]
      do_fork: T
    )
    (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: [494]
            )
          ]
        )
      ]
    )
    (C {<Exit>} {($ Id.VSub_DollarName '$fail')})
  ]
)