(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:test_description spids:[21])
          op: Equal
          rhs: {(SQ <'Test merging of notes trees'>)}
          spids: [21]
        )
      ]
      spids: [21]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <'\n'> <'\ttest_commit 1st &&\n'> <'\ttest_commit 2nd &&\n'> <'\ttest_commit 3rd &&\n'> 
          <'\ttest_commit 4th &&\n'> <'\ttest_commit 5th &&\n'> <'\t# Create notes on 4 first commits\n'> 
          <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tgit notes add -m "Notes on 1st commit" 1st &&\n'> 
          <'\tgit notes add -m "Notes on 2nd commit" 2nd &&\n'> <'\tgit notes add -m "Notes on 3rd commit" 3rd &&\n'> 
          <'\tgit notes add -m "Notes on 4th commit" 4th &&\n'> <'\t# Copy notes to remote-notes\n'> <'\tgit fetch . refs/notes/*:refs/remote-notes/origin/*\n'>
        )
      }
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:commit_sha1 spids:[54])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(1st) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [55 65]
              )
            }
          spids: [54]
        )
      ]
      spids: [54]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:commit_sha2 spids:[67])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(2nd) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [68 78]
              )
            }
          spids: [67]
        )
      ]
      spids: [67]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:commit_sha3 spids:[80])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(3rd) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [81 91]
              )
            }
          spids: [80]
        )
      ]
      spids: [80]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:commit_sha4 spids:[93])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(4th) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [94 104]
              )
            }
          spids: [93]
        )
      ]
      spids: [93]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:commit_sha5 spids:[106])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(5th) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [107 117]
              )
            }
          spids: [106]
        )
      ]
      spids: [106]
    )
    (command.FuncDef
      name: verify_notes
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:notes_ref spids:[128])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [128]
                )
              ]
              spids: [128]
            )
            (command.AndOr
              ops: [Op_DAmp Op_DAmp Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {(git)} {(-c)} 
                      {(core.notesRef) (Lit_Other '=') (DQ (refs/notes/) ($ VSub_Name '$notes_ref'))} {(notes)}
                    )
                    (command.SimpleCommand
                      words: [{(sort)}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(DQ (output_notes_) ($ VSub_Name '$notes_ref'))}
                        )
                      ]
                    )
                  ]
                  negated: F
                )
                (C {(test_cmp)} {(DQ (expect_notes_) ($ VSub_Name '$notes_ref'))} 
                  {(DQ (output_notes_) ($ VSub_Name '$notes_ref'))}
                )
                (command.SimpleCommand
                  words: [
                    {(git)}
                    {(-c)}
                    {(core.notesRef) (Lit_Other '=') (DQ (refs/notes/) ($ VSub_Name '$notes_ref'))}
                    {(log)}
                    {(--format) (Lit_Other '=') (DQ ('%H %s%n%N'))}
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(DQ (output_log_) ($ VSub_Name '$notes_ref'))}
                    )
                  ]
                )
                (C {(test_cmp)} {(DQ (expect_log_) ($ VSub_Name '$notes_ref'))} 
                  {(DQ (output_log_) ($ VSub_Name '$notes_ref'))}
                )
              ]
            )
          ]
          spids: [125]
        )
      spids: [120 124]
    )
    (command.Pipeline
      children: [
        (command.SimpleCommand
          words: [{(cat)}]
          redirects: [
            (redir.HereDoc
              op: <Redir_DLess '<<'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 246
              stdin_parts: [
                ('5e93d24084d32e1cb61f7070505b9d2530cca987 ')
                ($ VSub_Name '$commit_sha4')
                ('\n')
                ('8366731eeee53787d2bdf8fc1eff7d94757e8da0 ')
                ($ VSub_Name '$commit_sha3')
                ('\n')
                ('eede89064cd42441590d6afec6c37b321ada3389 ')
                ($ VSub_Name '$commit_sha2')
                ('\n')
                ('daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ')
                ($ VSub_Name '$commit_sha1')
                ('\n')
              ]
            )
          ]
        )
        (command.SimpleCommand
          words: [{(sort)}]
          redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_x)})]
        )
      ]
      negated: F
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_x)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 276
          stdin_parts: [
            ($ VSub_Name '$commit_sha5')
            (' 5th\n')
            ('\n')
            ($ VSub_Name '$commit_sha4')
            (' 4th\n')
            ('Notes on 4th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha3')
            (' 3rd\n')
            ('Notes on 3rd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha2')
            (' 2nd\n')
            ('Notes on 2nd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha1')
            (' 1st\n')
            ('Notes on 1st commit\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'verify initial notes (x)'>)} {(SQ <'\n'> <'\tverify_notes x\n'>)})
    (C {(cp)} {(expect_notes_x)} {(expect_notes_y)})
    (C {(cp)} {(expect_notes_x)} {(expect_notes_v)})
    (C {(cp)} {(expect_log_x)} {(expect_log_y)})
    (C {(cp)} {(expect_log_x)} {(expect_log_v)})
    (C {(test_expect_success)} {(SQ <'fail to merge empty notes ref into empty notes ref (z => y)'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/y" notes merge z\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'fail to merge into various non-notes refs'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes" notes merge x &&\n'> 
          <'\ttest_must_fail git -c "core.notesRef=refs/notes/" notes merge x &&\n'> <'\tmkdir -p .git/refs/notes/dir &&\n'> 
          <'\ttest_must_fail git -c "core.notesRef=refs/notes/dir" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/dir/" notes merge x &&\n'> 
          <'\ttest_must_fail git -c "core.notesRef=refs/heads/master" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/y:" notes merge x &&\n'> 
          <'\ttest_must_fail git -c "core.notesRef=refs/notes/y:foo" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/foo^{bar" notes merge x\n'>
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ <'merge non-notes ref into empty notes ref (remote-notes/origin/x => v)'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/v &&\n'> 
          <'\tgit notes merge refs/remote-notes/origin/x &&\n'> <'\tverify_notes v &&\n'> 
          <'\t# refs/remote-notes/origin/x and v should point to the same notes commit\n'> <'\ttest "$(git rev-parse refs/remote-notes/origin/x)" = "$(git rev-parse refs/notes/v)"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge notes into empty notes ref (x => y)'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/y &&\n'> <'\tgit notes merge x &&\n'> 
          <'\tverify_notes y &&\n'> <'\t# x and y should point to the same notes commit\n'> 
          <'\ttest "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge empty notes ref (z => y)'>)} 
      {
        (SQ <'\n'> <'\tgit notes merge z &&\n'> <'\t# y should not change (still == x)\n'> 
          <'\ttest "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'change notes on other notes ref (y)'>)} 
      {
        (SQ <'\n'> <'\t# Not touching notes to 1st commit\n'> <'\tgit notes remove 2nd &&\n'> 
          <'\tgit notes append -m "More notes on 3rd commit" 3rd &&\n'> <'\tgit notes add -f -m "New notes on 4th commit" 4th &&\n'> 
          <'\tgit notes add -m "Notes on 5th commit" 5th\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge previous notes commit (y^ => y) => No-op'>)} 
      {
        (SQ <'\n'> <'\tpre_state="$(git rev-parse refs/notes/y)" &&\n'> <'\tgit notes merge y^ &&\n'> 
          <'\t# y should not move\n'> <'\ttest "$pre_state" = "$(git rev-parse refs/notes/y)"\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.SimpleCommand
          words: [{(cat)}]
          redirects: [
            (redir.HereDoc
              op: <Redir_DLess '<<'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 449
              stdin_parts: [
                ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ')
                ($ VSub_Name '$commit_sha5')
                ('\n')
                ('dec2502dac3ea161543f71930044deff93fa945c ')
                ($ VSub_Name '$commit_sha4')
                ('\n')
                ('4069cdb399fd45463ec6eef8e051a16a03592d91 ')
                ($ VSub_Name '$commit_sha3')
                ('\n')
                ('daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ')
                ($ VSub_Name '$commit_sha1')
                ('\n')
              ]
            )
          ]
        )
        (command.SimpleCommand
          words: [{(sort)}]
          redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_y)})]
        )
      ]
      negated: F
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_y)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 481
          stdin_parts: [
            ($ VSub_Name '$commit_sha5')
            (' 5th\n')
            ('Notes on 5th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha4')
            (' 4th\n')
            ('New notes on 4th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha3')
            (' 3rd\n')
            ('Notes on 3rd commit\n')
            ('\n')
            ('More notes on 3rd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha2')
            (' 2nd\n')
            ('\n')
            ($ VSub_Name '$commit_sha1')
            (' 1st\n')
            ('Notes on 1st commit\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'verify changed notes on other notes ref (y)'>)} 
      {(SQ <'\n'> <'\tverify_notes y\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'verify unchanged notes on original notes ref (x)'>)} 
      {(SQ <'\n'> <'\tverify_notes x\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'merge original notes (x) into changed notes (y) => No-op'>)} 
      {
        (SQ <'\n'> <'\tgit notes merge -vvv x &&\n'> <'\tverify_notes y &&\n'> <'\tverify_notes x\n'>)
      }
    )
    (C {(cp)} {(expect_notes_y)} {(expect_notes_x)})
    (C {(cp)} {(expect_log_y)} {(expect_log_x)})
    (C {(test_expect_success)} {(SQ <'merge changed (y) into original (x) => Fast-forward'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tgit notes merge y &&\n'> 
          <'\tverify_notes x &&\n'> <'\tverify_notes y &&\n'> <'\t# x and y should point to same the notes commit\n'> 
          <'\ttest "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge empty notes ref (z => y)'>)} 
      {
        (SQ <'\n'> <'\t# Prepare empty (but valid) notes ref (z)\n'> 
          <'\tgit config core.notesRef refs/notes/z &&\n'> <'\tgit notes add -m "foo" &&\n'> <'\tgit notes remove &&\n'> <'\tgit notes >output_notes_z &&\n'> 
          <'\ttest_cmp /dev/null output_notes_z &&\n'> <'\t# Do the merge (z => y)\n'> <'\tgit config core.notesRef refs/notes/y &&\n'> 
          <'\tgit notes merge z &&\n'> <'\tverify_notes y &&\n'> <'\t# y should no longer point to the same notes commit as x\n'> 
          <'\ttest "$(git rev-parse refs/notes/x)" != "$(git rev-parse refs/notes/y)"\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.SimpleCommand
          words: [{(cat)}]
          redirects: [
            (redir.HereDoc
              op: <Redir_DLess '<<'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 602
              stdin_parts: [
                ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ')
                ($ VSub_Name '$commit_sha5')
                ('\n')
                ('dec2502dac3ea161543f71930044deff93fa945c ')
                ($ VSub_Name '$commit_sha4')
                ('\n')
                ('4069cdb399fd45463ec6eef8e051a16a03592d91 ')
                ($ VSub_Name '$commit_sha3')
                ('\n')
                ('d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ')
                ($ VSub_Name '$commit_sha2')
                ('\n')
                ('43add6bd0c8c0bc871ac7991e0f5573cfba27804 ')
                ($ VSub_Name '$commit_sha1')
                ('\n')
              ]
            )
          ]
        )
        (command.SimpleCommand
          words: [{(sort)}]
          redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_y)})]
        )
      ]
      negated: F
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_y)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 637
          stdin_parts: [
            ($ VSub_Name '$commit_sha5')
            (' 5th\n')
            ('Notes on 5th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha4')
            (' 4th\n')
            ('New notes on 4th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha3')
            (' 3rd\n')
            ('Notes on 3rd commit\n')
            ('\n')
            ('More notes on 3rd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha2')
            (' 2nd\n')
            ('New notes on 2nd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha1')
            (' 1st\n')
            ('Notes on 1st commit\n')
            ('\n')
            ('More notes on 1st commit\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'change notes on other notes ref (y)'>)} 
      {
        (SQ <'\n'> <'\t# Append to 1st commit notes\n'> 
          <'\tgit notes append -m "More notes on 1st commit" 1st &&\n'> <'\t# Add new notes to 2nd commit\n'> <'\tgit notes add -m "New notes on 2nd commit" 2nd &&\n'> 
          <'\tverify_notes y\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.SimpleCommand
          words: [{(cat)}]
          redirects: [
            (redir.HereDoc
              op: <Redir_DLess '<<'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 677
              stdin_parts: [
                ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ')
                ($ VSub_Name '$commit_sha5')
                ('\n')
                ('1f257a3a90328557c452f0817d6cc50c89d315d4 ')
                ($ VSub_Name '$commit_sha4')
                ('\n')
                ('daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ')
                ($ VSub_Name '$commit_sha1')
                ('\n')
              ]
            )
          ]
        )
        (command.SimpleCommand
          words: [{(sort)}]
          redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_x)})]
        )
      ]
      negated: F
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_x)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 708
          stdin_parts: [
            ($ VSub_Name '$commit_sha5')
            (' 5th\n')
            ('Notes on 5th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha4')
            (' 4th\n')
            ('New notes on 4th commit\n')
            ('\n')
            ('More notes on 4th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha3')
            (' 3rd\n')
            ('\n')
            ($ VSub_Name '$commit_sha2')
            (' 2nd\n')
            ('\n')
            ($ VSub_Name '$commit_sha1')
            (' 1st\n')
            ('Notes on 1st commit\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'change notes on notes ref (x)'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tgit notes remove 3rd &&\n'> 
          <'\tgit notes append -m "More notes on 4th commit" 4th &&\n'> <'\tverify_notes x\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.SimpleCommand
          words: [{(cat)}]
          redirects: [
            (redir.HereDoc
              op: <Redir_DLess '<<'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 750
              stdin_parts: [
                ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ')
                ($ VSub_Name '$commit_sha5')
                ('\n')
                ('1f257a3a90328557c452f0817d6cc50c89d315d4 ')
                ($ VSub_Name '$commit_sha4')
                ('\n')
                ('d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ')
                ($ VSub_Name '$commit_sha2')
                ('\n')
                ('43add6bd0c8c0bc871ac7991e0f5573cfba27804 ')
                ($ VSub_Name '$commit_sha1')
                ('\n')
              ]
            )
          ]
        )
        (command.SimpleCommand
          words: [{(sort)}]
          redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_x)})]
        )
      ]
      negated: F
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_x)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 784
          stdin_parts: [
            ($ VSub_Name '$commit_sha5')
            (' 5th\n')
            ('Notes on 5th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha4')
            (' 4th\n')
            ('New notes on 4th commit\n')
            ('\n')
            ('More notes on 4th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha3')
            (' 3rd\n')
            ('\n')
            ($ VSub_Name '$commit_sha2')
            (' 2nd\n')
            ('New notes on 2nd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha1')
            (' 1st\n')
            ('Notes on 1st commit\n')
            ('\n')
            ('More notes on 1st commit\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'merge y into x => Non-conflicting 3-way merge'>)} 
      {(SQ <'\n'> <'\tgit notes merge y &&\n'> <'\tverify_notes x &&\n'> <'\tverify_notes y\n'>)}
    )
    (command.Pipeline
      children: [
        (command.SimpleCommand
          words: [{(cat)}]
          redirects: [
            (redir.HereDoc
              op: <Redir_DLess '<<'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 819
              stdin_parts: [
                ('05a4927951bcef347f51486575b878b2b60137f2 ')
                ($ VSub_Name '$commit_sha3')
                ('\n')
                ('d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ')
                ($ VSub_Name '$commit_sha2')
                ('\n')
              ]
            )
          ]
        )
        (command.SimpleCommand
          words: [{(sort)}]
          redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_w)})]
        )
      ]
      negated: F
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_w)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 847
          stdin_parts: [
            ($ VSub_Name '$commit_sha5')
            (' 5th\n')
            ('\n')
            ($ VSub_Name '$commit_sha4')
            (' 4th\n')
            ('\n')
            ($ VSub_Name '$commit_sha3')
            (' 3rd\n')
            ('New notes on 3rd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha2')
            (' 2nd\n')
            ('New notes on 2nd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha1')
            (' 1st\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'create notes on new, separate notes ref (w)'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/w &&\n'> 
          <'\t# Add same note as refs/notes/y on 2nd commit\n'> <'\tgit notes add -m "New notes on 2nd commit" 2nd &&\n'> 
          <'\t# Add new note on 3rd commit (non-conflicting)\n'> <'\tgit notes add -m "New notes on 3rd commit" 3rd &&\n'> 
          <'\t# Verify state of notes on new, separate notes ref (w)\n'> <'\tverify_notes w\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.SimpleCommand
          words: [{(cat)}]
          redirects: [
            (redir.HereDoc
              op: <Redir_DLess '<<'>
              fd: 16777215
              here_begin: {(EOF)}
              here_end_span_id: 895
              stdin_parts: [
                ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ')
                ($ VSub_Name '$commit_sha5')
                ('\n')
                ('1f257a3a90328557c452f0817d6cc50c89d315d4 ')
                ($ VSub_Name '$commit_sha4')
                ('\n')
                ('05a4927951bcef347f51486575b878b2b60137f2 ')
                ($ VSub_Name '$commit_sha3')
                ('\n')
                ('d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ')
                ($ VSub_Name '$commit_sha2')
                ('\n')
                ('43add6bd0c8c0bc871ac7991e0f5573cfba27804 ')
                ($ VSub_Name '$commit_sha1')
                ('\n')
              ]
            )
          ]
        )
        (command.SimpleCommand
          words: [{(sort)}]
          redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_x)})]
        )
      ]
      negated: F
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_x)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 930
          stdin_parts: [
            ($ VSub_Name '$commit_sha5')
            (' 5th\n')
            ('Notes on 5th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha4')
            (' 4th\n')
            ('New notes on 4th commit\n')
            ('\n')
            ('More notes on 4th commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha3')
            (' 3rd\n')
            ('New notes on 3rd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha2')
            (' 2nd\n')
            ('New notes on 2nd commit\n')
            ('\n')
            ($ VSub_Name '$commit_sha1')
            (' 1st\n')
            ('Notes on 1st commit\n')
            ('\n')
            ('More notes on 1st commit\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'merge w into x => Non-conflicting history-less merge'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tgit notes merge w &&\n'> 
          <'\t# Verify new state of notes on other notes ref (x)\n'> <'\tverify_notes x &&\n'> <'\t# Also verify that nothing changed on other notes refs (y and w)\n'> 
          <'\tverify_notes y &&\n'> <'\tverify_notes w\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)