(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: 
            {
              (SQ (Token id:Id.Lit_Chars val:'merge conflict in crlf repo\n' span_id:6) 
                (Token id:Id.Lit_Chars val:'\n' span_id:7) (Token id:Id.Lit_Chars val:'\t\tb---M\n' span_id:8) 
                (Token id:Id.Lit_Chars val:'\t       /   /\n' span_id:9) (Token id:Id.Lit_Chars val:'\tinitial---a\n' span_id:10) (Token id:Id.Lit_Chars val:'\n' span_id:11)
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\techo foo | append_cr >file &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit commit -m "Initial" &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tgit tag initial &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit branch side &&\n' span_id:31) 
          (Token
            id: Id.Lit_Chars
            val: '\techo line from a | append_cr >file &&\n'
            span_id: 32
          ) (Token id:Id.Lit_Chars val:'\tgit commit -m "add line from a" file &&\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\tgit tag a &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:35) 
          (Token
            id: Id.Lit_Chars
            val: '\techo line from b | append_cr >file &&\n'
            span_id: 36
          ) (Token id:Id.Lit_Chars val:'\tgit commit -m "add line from b" file &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\tgit tag b &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit checkout master\n' span_id:39)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Check "ours" is CRLF' span_id:46))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\tgit merge side -s ours &&\n' span_id:52) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat file | remove_cr | append_cr >file.temp &&\n'
            span_id: 53
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp file file.temp\n' span_id:54)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'Check that conflict file is CRLF' span_id:61))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard a &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge side &&\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat file | remove_cr | append_cr >file.temp &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp file file.temp\n' span_id:69)
        )
      }
    )
    (C {(test_done)})
  ]
)