(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"Test merging of notes trees">)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (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">
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:commit_sha1)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(1st) (Lit_Other "^") (Lit_LBrace "{") (commit) (Lit_RBrace "}")}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [47 57]
              )
            }
          spids: [46]
        )
      ]
      spids: [46]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:commit_sha2)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(2nd) (Lit_Other "^") (Lit_LBrace "{") (commit) (Lit_RBrace "}")}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [60 70]
              )
            }
          spids: [59]
        )
      ]
      spids: [59]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:commit_sha3)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(3rd) (Lit_Other "^") (Lit_LBrace "{") (commit) (Lit_RBrace "}")}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [73 83]
              )
            }
          spids: [72]
        )
      ]
      spids: [72]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:commit_sha4)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(4th) (Lit_Other "^") (Lit_LBrace "{") (commit) (Lit_RBrace "}")}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [86 96]
              )
            }
          spids: [85]
        )
      ]
      spids: [85]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:commit_sha5)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(git)} {(rev-parse)} 
                        {(5th) (Lit_Other "^") (Lit_LBrace "{") (commit) (Lit_RBrace "}")}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [99 109]
              )
            }
          spids: [98]
        )
      ]
      spids: [98]
    )
    (FuncDef
      name: verify_notes
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:notes_ref)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [120]
                )
              ]
              spids: [120]
            )
            (AndOr
              children: [
                (Pipeline
                  children: [
                    (C {(git)} {(-c)} 
                      {(core.notesRef) (Lit_Other "=") (DQ (refs/notes/) ($ VSub_Name "$notes_ref"))} {(notes)}
                    )
                    (SimpleCommand
                      words: [{(sort)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(DQ (output_notes_) ($ VSub_Name "$notes_ref"))}
                          spids: [144]
                        )
                      ]
                    )
                  ]
                  negated: False
                )
                (AndOr
                  children: [
                    (C {(test_cmp)} {(DQ (expect_notes_) ($ VSub_Name "$notes_ref"))} 
                      {(DQ (output_notes_) ($ VSub_Name "$notes_ref"))}
                    )
                    (AndOr
                      children: [
                        (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
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(DQ (output_log_) ($ VSub_Name "$notes_ref"))}
                              spids: [189]
                            )
                          ]
                        )
                        (C {(test_cmp)} {(DQ (expect_log_) ($ VSub_Name "$notes_ref"))} 
                          {(DQ (output_log_) ($ VSub_Name "$notes_ref"))}
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [117]
        )
      spids: [112 116]
    )
    (Pipeline
      children: [
        (SimpleCommand
          words: [{(cat)}]
          redirects: [
            (HereDoc
              op_id: Redir_DLess
              fd: -1
              body: 
                {
                  (DQ ("5e93d24084d32e1cb61f7070505b9d2530cca987 ") ($ VSub_Name "$commit_sha4") ("\n") 
                    ("8366731eeee53787d2bdf8fc1eff7d94757e8da0 ") ($ VSub_Name "$commit_sha3") ("\n") ("eede89064cd42441590d6afec6c37b321ada3389 ") 
                    ($ VSub_Name "$commit_sha2") ("\n") ("daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ") ($ VSub_Name "$commit_sha1") ("\n")
                  )
                }
              do_expansion: True
              here_end: EOF
              was_filled: True
              spids: [215]
            )
          ]
        )
        (SimpleCommand
          words: [{(sort)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect_notes_x)} spids:[222])]
        )
      ]
      negated: False
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect_log_x)} spids:[240])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ($ 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")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [243]
        )
      ]
    )
    (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">
        )
      }
    )
    (Pipeline
      children: [
        (SimpleCommand
          words: [{(cat)}]
          redirects: [
            (HereDoc
              op_id: Redir_DLess
              fd: -1
              body: 
                {
                  (DQ ("0f2efbd00262f2fd41dfae33df8765618eeacd99 ") ($ VSub_Name "$commit_sha5") ("\n") 
                    ("dec2502dac3ea161543f71930044deff93fa945c ") ($ VSub_Name "$commit_sha4") ("\n") ("4069cdb399fd45463ec6eef8e051a16a03592d91 ") 
                    ($ VSub_Name "$commit_sha3") ("\n") ("daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ") ($ VSub_Name "$commit_sha1") ("\n")
                  )
                }
              do_expansion: True
              here_end: EOF
              was_filled: True
              spids: [414]
            )
          ]
        )
        (SimpleCommand
          words: [{(sort)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect_notes_y)} spids:[421])]
        )
      ]
      negated: False
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect_log_y)} spids:[439])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ($ 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")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [442]
        )
      ]
    )
    (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">
        )
      }
    )
    (Pipeline
      children: [
        (SimpleCommand
          words: [{(cat)}]
          redirects: [
            (HereDoc
              op_id: Redir_DLess
              fd: -1
              body: 
                {
                  (DQ ("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")
                  )
                }
              do_expansion: True
              here_end: EOF
              was_filled: True
              spids: [560]
            )
          ]
        )
        (SimpleCommand
          words: [{(sort)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect_notes_y)} spids:[567])]
        )
      ]
      negated: False
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect_log_y)} spids:[588])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ($ 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")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [591]
        )
      ]
    )
    (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">
        )
      }
    )
    (Pipeline
      children: [
        (SimpleCommand
          words: [{(cat)}]
          redirects: [
            (HereDoc
              op_id: Redir_DLess
              fd: -1
              body: 
                {
                  (DQ ("0f2efbd00262f2fd41dfae33df8765618eeacd99 ") ($ VSub_Name "$commit_sha5") ("\n") 
                    ("1f257a3a90328557c452f0817d6cc50c89d315d4 ") ($ VSub_Name "$commit_sha4") ("\n") ("daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ") 
                    ($ VSub_Name "$commit_sha1") ("\n")
                  )
                }
              do_expansion: True
              here_end: EOF
              was_filled: True
              spids: [637]
            )
          ]
        )
        (SimpleCommand
          words: [{(sort)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect_notes_x)} spids:[644])]
        )
      ]
      negated: False
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect_log_x)} spids:[659])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ($ 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")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [662]
        )
      ]
    )
    (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">
        )
      }
    )
    (Pipeline
      children: [
        (SimpleCommand
          words: [{(cat)}]
          redirects: [
            (HereDoc
              op_id: Redir_DLess
              fd: -1
              body: 
                {
                  (DQ ("0f2efbd00262f2fd41dfae33df8765618eeacd99 ") ($ VSub_Name "$commit_sha5") ("\n") 
                    ("1f257a3a90328557c452f0817d6cc50c89d315d4 ") ($ VSub_Name "$commit_sha4") ("\n") ("d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ") 
                    ($ VSub_Name "$commit_sha2") ("\n") ("43add6bd0c8c0bc871ac7991e0f5573cfba27804 ") ($ VSub_Name "$commit_sha1") ("\n")
                  )
                }
              do_expansion: True
              here_end: EOF
              was_filled: True
              spids: [703]
            )
          ]
        )
        (SimpleCommand
          words: [{(sort)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect_notes_x)} spids:[710])]
        )
      ]
      negated: False
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect_log_x)} spids:[728])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ($ 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")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [731]
        )
      ]
    )
    (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">)}
    )
    (Pipeline
      children: [
        (SimpleCommand
          words: [{(cat)}]
          redirects: [
            (HereDoc
              op_id: Redir_DLess
              fd: -1
              body: 
                {
                  (DQ ("05a4927951bcef347f51486575b878b2b60137f2 ") ($ VSub_Name "$commit_sha3") ("\n") 
                    ("d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ") ($ VSub_Name "$commit_sha2") ("\n")
                  )
                }
              do_expansion: True
              here_end: EOF
              was_filled: True
              spids: [774]
            )
          ]
        )
        (SimpleCommand
          words: [{(sort)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect_notes_w)} spids:[781])]
        )
      ]
      negated: False
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect_log_w)} spids:[793])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ($ 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")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [796]
        )
      ]
    )
    (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">
        )
      }
    )
    (Pipeline
      children: [
        (SimpleCommand
          words: [{(cat)}]
          redirects: [
            (HereDoc
              op_id: Redir_DLess
              fd: -1
              body: 
                {
                  (DQ ("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")
                  )
                }
              do_expansion: True
              here_end: EOF
              was_filled: True
              spids: [837]
            )
          ]
        )
        (SimpleCommand
          words: [{(sort)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect_notes_x)} spids:[844])]
        )
      ]
      negated: False
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect_log_x)} spids:[865])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ($ 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")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [868]
        )
      ]
    )
    (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)})
  ]
)