(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:'checkout -m -- <conflicted path>\n' span_id:6) 
                (Token id:Id.Lit_Chars val:'\n' span_id:7) 
                (Token
                  id: Id.Lit_Chars
                  val: 'Ensures that checkout -m on a resolved file restores the conflicted file'
                  span_id: 8
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\ttest_commit both.txt both.txt initial &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\tgit branch topic &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\ttest_commit modified_in_master both.txt in_master &&\n' span_id:26) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit added_in_master each.txt in_master &&\n'
            span_id: 27
          ) (Token id:Id.Lit_Chars val:'\tgit checkout topic &&\n' span_id:28) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit modified_in_topic both.txt in_topic &&\n'
            span_id: 29
          ) (Token id:Id.Lit_Chars val:'\ttest_commit added_in_topic each.txt in_topic\n' span_id:30)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git merge master' span_id:37))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'    test_must_fail git merge master\n' span_id:42)
        )
      }
    )
    (command.ShFunction
      name: clean_branchnames
      body: 
        (command.BraceGroup
          children: [
            (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/^\\([<>]\\{5,\\}\\) .*$/\\1/' span_id:61))})
          ]
        )
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'-m restores 2-way conflicted+resolved file' span_id:70))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\tcp each.txt each.txt.conflicted &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\techo resolved >each.txt &&\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'\tgit add each.txt &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\tgit checkout -m -- each.txt &&\n' span_id:78) 
          (Token
            id: Id.Lit_Chars
            val: '\tclean_branchnames <each.txt >each.txt.cleaned &&\n'
            span_id: 79
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tclean_branchnames <each.txt.conflicted >each.txt.conflicted.cleaned &&\n'
            span_id: 80
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp each.txt.conflicted.cleaned each.txt.cleaned\n' span_id:81)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'-m restores 3-way conflicted+resolved file' span_id:88))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:92) 
          (Token id:Id.Lit_Chars val:'\tcp both.txt both.txt.conflicted &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\techo resolved >both.txt &&\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\tgit add both.txt &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\tgit checkout -m -- both.txt &&\n' span_id:96) 
          (Token
            id: Id.Lit_Chars
            val: '\tclean_branchnames <both.txt >both.txt.cleaned &&\n'
            span_id: 97
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tclean_branchnames <both.txt.conflicted >both.txt.conflicted.cleaned &&\n'
            span_id: 98
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp both.txt.conflicted.cleaned both.txt.cleaned\n' span_id:99)
        )
      }
    )
    (C {(test_done)})
  ]
)