(command.CommandList
  children: [
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {(.)} 
              {
                (DQ 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:srcdir span_id:56)
                    suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{(.)})
                  ) (/init.sh)
                )
              }
            )
          terminator: (Token id:Id.Op_Semi val:';' span_id:62)
        )
        (C {(path_prepend_)} {(.)})
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fail) op:assign_op.Equal rhs:{(0)} spids:[68])]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:78)
          fd: -1
          arg_word: {(Id.KW_In in)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:82)
          fd: -1
          here_begin: {(EOT)}
          here_end_span_id: 89
          stdin_parts: [('foo*\n') ('bar\n') ('Baz\n')]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:93)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:97)
          fd: -1
          here_begin: {(EOT)}
          here_end_span_id: 102
          stdin_parts: [('foobar: 1\n')]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(test-exclude)} {(-wildcards)} {(Id.KW_In in)} {(--)} {(foobar)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:114)
              fd: -1
              arg_word: {(out)}
            )
          ]
        )
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:120)
          arg_word: {($ Id.VSub_QMark '$?')}
        )
      ]
    )
    (command.Case
      to_match: 
        {
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:133)
            command_list: 
              (command.CommandList
                children: [
                  (command.Pipeline
                    children: [
                      (C {(echo)} {(r)})
                      (C {(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:145))})
                    ]
                    negated: F
                  )
                ]
              )
          )
        }
      arms: [
        (case_arm
          pat_list: [{(SQ )}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cr)
                  op: assign_op.Equal
                  rhs: {(SQ (Token id:Id.Lit_Chars val:'\\015' span_id:157))}
                  spids: [155]
                )
              ]
            )
          ]
          spids: [151 153 159 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cr)
                  op: assign_op.Equal
                  rhs: {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:166))}
                  spids: [164]
                )
              ]
            )
          ]
          spids: [161 162 168 -1]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{(tr)} {(-d)} {(DQ ($ Id.VSub_DollarName '$cr'))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:187)
              fd: -1
              arg_word: {(out)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:191)
              fd: -1
              arg_word: {(k)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[176])]
        )
        (C {(mv)} {(k)} {(out)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(compare)} {(expected)} {(out)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [212]
            )
          ]
        )
      ]
    )
    (C {(Exit)} {($ Id.VSub_DollarName '$fail')})
  ]
)