(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'Test notes merging with auto-resolving strategies'>)}
          spids: [13]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (C {<test_expect_success>} {(SQ <'setup commits'>)} 
      {
        (SQ <'\n'> <'\ttest_commit 1st &&\n'> <'\ttest_commit 2nd &&\n'> <'\ttest_commit 3rd &&\n'> 
          <'\ttest_commit 4th &&\n'> <'\ttest_commit 5th &&\n'> <'\ttest_commit 6th &&\n'> <'\ttest_commit 7th &&\n'> 
          <'\ttest_commit 8th &&\n'> <'\ttest_commit 9th &&\n'> <'\ttest_commit 10th &&\n'> <'\ttest_commit 11th &&\n'> 
          <'\ttest_commit 12th &&\n'> <'\ttest_commit 13th &&\n'> <'\ttest_commit 14th &&\n'> <'\ttest_commit 15th\n'>
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha1)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<1st> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [53]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha2)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<2nd> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [66]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha3)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<3rd> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [79]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha4)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<4th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [92]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha5)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<5th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [105]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha6)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<6th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [118]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha7)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<7th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [131]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha8)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<8th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [144]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha9)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<9th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [157]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha10)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<10th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [170]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha11)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<11th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [183]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha12)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<12th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [196]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha13)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<13th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [209]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha14)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<14th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [222]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:commit_sha15)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<git>} {<rev-parse>} 
                    {<15th> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                  )
              )
            }
          spids: [235]
        )
      ]
    )
    (command.ShFunction
      name: verify_notes
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:notes_ref)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [257]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:suffix)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                  spids: [263]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<git>} {<-c>} 
                      {<core.notesRef> <Id.Lit_Equals '='> 
                        (DQ <'refs/notes/'> ($ Id.VSub_DollarName '$notes_ref'))
                      } {<notes>}
                    )
                    (command.Simple
                      words: [{<sort>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ <output_notes_> ($ Id.VSub_DollarName '$suffix'))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  negated: F
                )
                (C {<test_cmp>} {(DQ <expect_notes_> ($ Id.VSub_DollarName '$suffix'))} 
                  {(DQ <output_notes_> ($ Id.VSub_DollarName '$suffix'))}
                )
                (command.Simple
                  words: [
                    {<git>}
                    {<-c>}
                    {<core.notesRef> <Id.Lit_Equals '='> 
                      (DQ <'refs/notes/'> ($ Id.VSub_DollarName '$notes_ref'))
                    }
                    {<log>}
                    {<--format> <Id.Lit_Equals '='> (DQ <'%H %s%n%N'>)}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ <output_log_> ($ Id.VSub_DollarName '$suffix'))}
                    )
                  ]
                  do_fork: T
                )
                (C {<test_cmp>} {(DQ <expect_log_> ($ Id.VSub_DollarName '$suffix'))} 
                  {(DQ <output_log_> ($ Id.VSub_DollarName '$suffix'))}
                )
              ]
            )
          ]
        )
    )
    (C {<test_expect_success>} {(SQ <'setup merge base (x)'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> 
          <'\tgit notes add -m "x notes on 6th commit" 6th &&\n'> <'\tgit notes add -m "x notes on 7th commit" 7th &&\n'> 
          <'\tgit notes add -m "x notes on 8th commit" 8th &&\n'> <'\tgit notes add -m "x notes on 9th commit" 9th &&\n'> 
          <'\tgit notes add -m "x notes on 10th commit" 10th &&\n'> <'\tgit notes add -m "x notes on 11th commit" 11th &&\n'> 
          <'\tgit notes add -m "x notes on 12th commit" 12th &&\n'> <'\tgit notes add -m "x notes on 13th commit" 13th &&\n'> 
          <'\tgit notes add -m "x notes on 14th commit" 14th &&\n'> <'\tgit notes add -m "x notes on 15th commit" 15th\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 421
                  stdin_parts: [
                    <'457a85d6c814ea208550f15fcc48f804ac8dc023 '>
                    ($ Id.VSub_DollarName '$commit_sha15')
                    <'\n'>
                    <'b0c95b954301d69da2bc3723f4cb1680d355937c '>
                    ($ Id.VSub_DollarName '$commit_sha14')
                    <'\n'>
                    <'5d30216a129eeffa97d9694ffe8c74317a560315 '>
                    ($ Id.VSub_DollarName '$commit_sha13')
                    <'\n'>
                    <'dd161bc149470fd890dd4ab52a4cbd79bbd18c36 '>
                    ($ Id.VSub_DollarName '$commit_sha12')
                    <'\n'>
                    <'7abbc45126d680336fb24294f013a7cdfa3ed545 '>
                    ($ Id.VSub_DollarName '$commit_sha11')
                    <'\n'>
                    <'b8d03e173f67f6505a76f6e00cf93440200dd9be '>
                    ($ Id.VSub_DollarName '$commit_sha10')
                    <'\n'>
                    <'20c613c835011c48a5abe29170a2402ca6354910 '>
                    ($ Id.VSub_DollarName '$commit_sha9')
                    <'\n'>
                    <'a3daf8a1e4e5dc3409a303ad8481d57bfea7f5d6 '>
                    ($ Id.VSub_DollarName '$commit_sha8')
                    <'\n'>
                    <'897003322b53bc6ca098e9324ee508362347e734 '>
                    ($ Id.VSub_DollarName '$commit_sha7')
                    <'\n'>
                    <'11d97fdebfa5ceee540a3da07bce6fa0222bc082 '>
                    ($ Id.VSub_DollarName '$commit_sha6')
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [{<sort>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_notes_x>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_x>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 487
              stdin_parts: [
                ($ Id.VSub_DollarName '$commit_sha15')
                <' 15th\n'>
                <'x notes on 15th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha14')
                <' 14th\n'>
                <'x notes on 14th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha13')
                <' 13th\n'>
                <'x notes on 13th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha12')
                <' 12th\n'>
                <'x notes on 12th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha11')
                <' 11th\n'>
                <'x notes on 11th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha10')
                <' 10th\n'>
                <'x notes on 10th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha9')
                <' 9th\n'>
                <'x notes on 9th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha8')
                <' 8th\n'>
                <'x notes on 8th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha7')
                <' 7th\n'>
                <'x notes on 7th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha6')
                <' 6th\n'>
                <'x notes on 6th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha5')
                <' 5th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha4')
                <' 4th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha3')
                <' 3rd\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha2')
                <' 2nd\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha1')
                <' 1st\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'verify state of merge base (x)'>)} {(SQ <'verify_notes x x'>)})
    (C {<test_expect_success>} {(SQ <'setup local branch (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/x &&\n'> 
          <'\tgit config core.notesRef refs/notes/y &&\n'> <'\tgit notes add -f -m "y notes on 3rd commit" 3rd &&\n'> 
          <'\tgit notes add -f -m "y notes on 4th commit" 4th &&\n'> <'\tgit notes add -f -m "y notes on 5th commit" 5th &&\n'> <'\tgit notes remove 6th &&\n'> 
          <'\tgit notes remove 7th &&\n'> <'\tgit notes remove 8th &&\n'> <'\tgit notes add -f -m "y notes on 12th commit" 12th &&\n'> 
          <'\tgit notes add -f -m "y notes on 13th commit" 13th &&\n'> <'\tgit notes add -f -m "y notes on 14th commit" 14th &&\n'> 
          <'\tgit notes add -f -m "y notes on 15th commit" 15th\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 566
                  stdin_parts: [
                    <'68b8630d25516028bed862719855b3d6768d7833 '>
                    ($ Id.VSub_DollarName '$commit_sha15')
                    <'\n'>
                    <'5de7ea7ad4f47e7ff91989fb82234634730f75df '>
                    ($ Id.VSub_DollarName '$commit_sha14')
                    <'\n'>
                    <'3a631fdb6f41b05b55d8f4baf20728ba8f6fccbc '>
                    ($ Id.VSub_DollarName '$commit_sha13')
                    <'\n'>
                    <'a66055fa82f7a03fe0c02a6aba3287a85abf7c62 '>
                    ($ Id.VSub_DollarName '$commit_sha12')
                    <'\n'>
                    <'7abbc45126d680336fb24294f013a7cdfa3ed545 '>
                    ($ Id.VSub_DollarName '$commit_sha11')
                    <'\n'>
                    <'b8d03e173f67f6505a76f6e00cf93440200dd9be '>
                    ($ Id.VSub_DollarName '$commit_sha10')
                    <'\n'>
                    <'20c613c835011c48a5abe29170a2402ca6354910 '>
                    ($ Id.VSub_DollarName '$commit_sha9')
                    <'\n'>
                    <'154508c7a0bcad82b6fe4b472bc4c26b3bf0825b '>
                    ($ Id.VSub_DollarName '$commit_sha5')
                    <'\n'>
                    <'e2bfd06a37dd2031684a59a6e2b033e212239c78 '>
                    ($ Id.VSub_DollarName '$commit_sha4')
                    <'\n'>
                    <'5772f42408c0dd6f097a7ca2d24de0e78d1c46b1 '>
                    ($ Id.VSub_DollarName '$commit_sha3')
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [{<sort>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_notes_y>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_y>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 632
              stdin_parts: [
                ($ Id.VSub_DollarName '$commit_sha15')
                <' 15th\n'>
                <'y notes on 15th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha14')
                <' 14th\n'>
                <'y notes on 14th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha13')
                <' 13th\n'>
                <'y notes on 13th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha12')
                <' 12th\n'>
                <'y notes on 12th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha11')
                <' 11th\n'>
                <'x notes on 11th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha10')
                <' 10th\n'>
                <'x notes on 10th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha9')
                <' 9th\n'>
                <'x notes on 9th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha8')
                <' 8th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha7')
                <' 7th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha6')
                <' 6th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha5')
                <' 5th\n'>
                <'y notes on 5th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha4')
                <' 4th\n'>
                <'y notes on 4th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha3')
                <' 3rd\n'>
                <'y notes on 3rd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha2')
                <' 2nd\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha1')
                <' 1st\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'verify state of local branch (y)'>)} {(SQ <'verify_notes y y'>)})
    (C {<test_expect_success>} {(SQ <'setup remote branch (z)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/z refs/notes/x &&\n'> 
          <'\tgit config core.notesRef refs/notes/z &&\n'> <'\tgit notes add -f -m "z notes on 2nd commit" 2nd &&\n'> 
          <'\tgit notes add -f -m "y notes on 4th commit" 4th &&\n'> <'\tgit notes add -f -m "z notes on 5th commit" 5th &&\n'> <'\tgit notes remove 6th &&\n'> 
          <'\tgit notes add -f -m "z notes on 8th commit" 8th &&\n'> <'\tgit notes remove 9th &&\n'> <'\tgit notes add -f -m "z notes on 11th commit" 11th &&\n'> 
          <'\tgit notes remove 12th &&\n'> <'\tgit notes add -f -m "y notes on 14th commit" 14th &&\n'> 
          <'\tgit notes add -f -m "z notes on 15th commit" 15th\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 711
                  stdin_parts: [
                    <'9b4b2c61f0615412da3c10f98ff85b57c04ec765 '>
                    ($ Id.VSub_DollarName '$commit_sha15')
                    <'\n'>
                    <'5de7ea7ad4f47e7ff91989fb82234634730f75df '>
                    ($ Id.VSub_DollarName '$commit_sha14')
                    <'\n'>
                    <'5d30216a129eeffa97d9694ffe8c74317a560315 '>
                    ($ Id.VSub_DollarName '$commit_sha13')
                    <'\n'>
                    <'7e3c53503a3db8dd996cb62e37c66e070b44b54d '>
                    ($ Id.VSub_DollarName '$commit_sha11')
                    <'\n'>
                    <'b8d03e173f67f6505a76f6e00cf93440200dd9be '>
                    ($ Id.VSub_DollarName '$commit_sha10')
                    <'\n'>
                    <'851e1638784a884c7dd26c5d41f3340f6387413a '>
                    ($ Id.VSub_DollarName '$commit_sha8')
                    <'\n'>
                    <'897003322b53bc6ca098e9324ee508362347e734 '>
                    ($ Id.VSub_DollarName '$commit_sha7')
                    <'\n'>
                    <'99fc34adfc400b95c67b013115e37e31aa9a6d23 '>
                    ($ Id.VSub_DollarName '$commit_sha5')
                    <'\n'>
                    <'e2bfd06a37dd2031684a59a6e2b033e212239c78 '>
                    ($ Id.VSub_DollarName '$commit_sha4')
                    <'\n'>
                    <'283b48219aee9a4105f6cab337e789065c82c2b9 '>
                    ($ Id.VSub_DollarName '$commit_sha2')
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [{<sort>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_notes_z>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_z>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 777
              stdin_parts: [
                ($ Id.VSub_DollarName '$commit_sha15')
                <' 15th\n'>
                <'z notes on 15th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha14')
                <' 14th\n'>
                <'y notes on 14th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha13')
                <' 13th\n'>
                <'x notes on 13th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha12')
                <' 12th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha11')
                <' 11th\n'>
                <'z notes on 11th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha10')
                <' 10th\n'>
                <'x notes on 10th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha9')
                <' 9th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha8')
                <' 8th\n'>
                <'z notes on 8th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha7')
                <' 7th\n'>
                <'x notes on 7th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha6')
                <' 6th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha5')
                <' 5th\n'>
                <'z notes on 5th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha4')
                <' 4th\n'>
                <'y notes on 4th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha3')
                <' 3rd\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha2')
                <' 2nd\n'>
                <'z notes on 2nd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha1')
                <' 1st\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'verify state of remote branch (z)'>)} {(SQ <'verify_notes z z'>)})
    (C {<test_expect_success>} {(SQ <'merge z into y with invalid strategy => Fail/No changes'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/y &&\n'> 
          <'\ttest_must_fail git notes merge --strategy=foo z &&\n'> <'\t# Verify no changes (y)\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {(SQ <'merge z into y with invalid configuration option => Fail/No changes'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/y &&\n'> 
          <'\ttest_must_fail git -c notes.mergeStrategy="foo" notes merge z &&\n'> <'\t# Verify no changes (y)\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 921
                  stdin_parts: [
                    <'68b8630d25516028bed862719855b3d6768d7833 '>
                    ($ Id.VSub_DollarName '$commit_sha15')
                    <'\n'>
                    <'5de7ea7ad4f47e7ff91989fb82234634730f75df '>
                    ($ Id.VSub_DollarName '$commit_sha14')
                    <'\n'>
                    <'3a631fdb6f41b05b55d8f4baf20728ba8f6fccbc '>
                    ($ Id.VSub_DollarName '$commit_sha13')
                    <'\n'>
                    <'a66055fa82f7a03fe0c02a6aba3287a85abf7c62 '>
                    ($ Id.VSub_DollarName '$commit_sha12')
                    <'\n'>
                    <'7e3c53503a3db8dd996cb62e37c66e070b44b54d '>
                    ($ Id.VSub_DollarName '$commit_sha11')
                    <'\n'>
                    <'b8d03e173f67f6505a76f6e00cf93440200dd9be '>
                    ($ Id.VSub_DollarName '$commit_sha10')
                    <'\n'>
                    <'154508c7a0bcad82b6fe4b472bc4c26b3bf0825b '>
                    ($ Id.VSub_DollarName '$commit_sha5')
                    <'\n'>
                    <'e2bfd06a37dd2031684a59a6e2b033e212239c78 '>
                    ($ Id.VSub_DollarName '$commit_sha4')
                    <'\n'>
                    <'5772f42408c0dd6f097a7ca2d24de0e78d1c46b1 '>
                    ($ Id.VSub_DollarName '$commit_sha3')
                    <'\n'>
                    <'283b48219aee9a4105f6cab337e789065c82c2b9 '>
                    ($ Id.VSub_DollarName '$commit_sha2')
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [{<sort>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_notes_ours>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_ours>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 987
              stdin_parts: [
                ($ Id.VSub_DollarName '$commit_sha15')
                <' 15th\n'>
                <'y notes on 15th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha14')
                <' 14th\n'>
                <'y notes on 14th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha13')
                <' 13th\n'>
                <'y notes on 13th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha12')
                <' 12th\n'>
                <'y notes on 12th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha11')
                <' 11th\n'>
                <'z notes on 11th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha10')
                <' 10th\n'>
                <'x notes on 10th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha9')
                <' 9th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha8')
                <' 8th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha7')
                <' 7th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha6')
                <' 6th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha5')
                <' 5th\n'>
                <'y notes on 5th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha4')
                <' 4th\n'>
                <'y notes on 4th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha3')
                <' 3rd\n'>
                <'y notes on 3rd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha2')
                <' 2nd\n'>
                <'z notes on 2nd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha1')
                <' 1st\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'merge z into y with "ours" strategy => Non-conflicting 3-way merge'>)} {(SQ <'\n'> <'\tgit notes merge --strategy=ours z &&\n'> <'\tverify_notes y ours\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/y^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {(SQ <'merge z into y with "ours" configuration option => Non-conflicting 3-way merge'>)} {(SQ <'\n'> <'\tgit -c notes.mergeStrategy="ours" notes merge z &&\n'> <'\tverify_notes y ours\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/y^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <'merge z into y with "ours" per-ref configuration option => Non-conflicting 3-way merge'>
        )
      } {(SQ <'\n'> <'\tgit -c notes.y.mergeStrategy="ours" notes merge z &&\n'> <'\tverify_notes y ours\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/y^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 1113
                  stdin_parts: [
                    <'9b4b2c61f0615412da3c10f98ff85b57c04ec765 '>
                    ($ Id.VSub_DollarName '$commit_sha15')
                    <'\n'>
                    <'5de7ea7ad4f47e7ff91989fb82234634730f75df '>
                    ($ Id.VSub_DollarName '$commit_sha14')
                    <'\n'>
                    <'3a631fdb6f41b05b55d8f4baf20728ba8f6fccbc '>
                    ($ Id.VSub_DollarName '$commit_sha13')
                    <'\n'>
                    <'7e3c53503a3db8dd996cb62e37c66e070b44b54d '>
                    ($ Id.VSub_DollarName '$commit_sha11')
                    <'\n'>
                    <'b8d03e173f67f6505a76f6e00cf93440200dd9be '>
                    ($ Id.VSub_DollarName '$commit_sha10')
                    <'\n'>
                    <'851e1638784a884c7dd26c5d41f3340f6387413a '>
                    ($ Id.VSub_DollarName '$commit_sha8')
                    <'\n'>
                    <'99fc34adfc400b95c67b013115e37e31aa9a6d23 '>
                    ($ Id.VSub_DollarName '$commit_sha5')
                    <'\n'>
                    <'e2bfd06a37dd2031684a59a6e2b033e212239c78 '>
                    ($ Id.VSub_DollarName '$commit_sha4')
                    <'\n'>
                    <'5772f42408c0dd6f097a7ca2d24de0e78d1c46b1 '>
                    ($ Id.VSub_DollarName '$commit_sha3')
                    <'\n'>
                    <'283b48219aee9a4105f6cab337e789065c82c2b9 '>
                    ($ Id.VSub_DollarName '$commit_sha2')
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [{<sort>}]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<expect_notes_theirs>}
            )
          ]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_theirs>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 1179
              stdin_parts: [
                ($ Id.VSub_DollarName '$commit_sha15')
                <' 15th\n'>
                <'z notes on 15th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha14')
                <' 14th\n'>
                <'y notes on 14th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha13')
                <' 13th\n'>
                <'y notes on 13th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha12')
                <' 12th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha11')
                <' 11th\n'>
                <'z notes on 11th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha10')
                <' 10th\n'>
                <'x notes on 10th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha9')
                <' 9th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha8')
                <' 8th\n'>
                <'z notes on 8th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha7')
                <' 7th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha6')
                <' 6th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha5')
                <' 5th\n'>
                <'z notes on 5th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha4')
                <' 4th\n'>
                <'y notes on 4th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha3')
                <' 3rd\n'>
                <'y notes on 3rd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha2')
                <' 2nd\n'>
                <'z notes on 2nd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha1')
                <' 1st\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'merge z into y with "theirs" strategy => Non-conflicting 3-way merge'>)} {(SQ <'\n'> <'\tgit notes merge --strategy=theirs z &&\n'> <'\tverify_notes y theirs\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/y^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <
'merge z into y with "theirs" strategy overriding configuration option "ours" => Non-conflicting 3-way merge'
          >
        )
      } 
      {
        (SQ <'\n'> <'\tgit -c notes.mergeStrategy="ours" notes merge --strategy=theirs z &&\n'> 
          <'\tverify_notes y theirs\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/y^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 1281
                  stdin_parts: [
                    <'7c4e546efd0fe939f876beb262ece02797880b54 '>
                    ($ Id.VSub_DollarName '$commit_sha15')
                    <'\n'>
                    <'5de7ea7ad4f47e7ff91989fb82234634730f75df '>
                    ($ Id.VSub_DollarName '$commit_sha14')
                    <'\n'>
                    <'3a631fdb6f41b05b55d8f4baf20728ba8f6fccbc '>
                    ($ Id.VSub_DollarName '$commit_sha13')
                    <'\n'>
                    <'a66055fa82f7a03fe0c02a6aba3287a85abf7c62 '>
                    ($ Id.VSub_DollarName '$commit_sha12')
                    <'\n'>
                    <'7e3c53503a3db8dd996cb62e37c66e070b44b54d '>
                    ($ Id.VSub_DollarName '$commit_sha11')
                    <'\n'>
                    <'b8d03e173f67f6505a76f6e00cf93440200dd9be '>
                    ($ Id.VSub_DollarName '$commit_sha10')
                    <'\n'>
                    <'851e1638784a884c7dd26c5d41f3340f6387413a '>
                    ($ Id.VSub_DollarName '$commit_sha8')
                    <'\n'>
                    <'6c841cc36ea496027290967ca96bd2bef54dbb47 '>
                    ($ Id.VSub_DollarName '$commit_sha5')
                    <'\n'>
                    <'e2bfd06a37dd2031684a59a6e2b033e212239c78 '>
                    ($ Id.VSub_DollarName '$commit_sha4')
                    <'\n'>
                    <'5772f42408c0dd6f097a7ca2d24de0e78d1c46b1 '>
                    ($ Id.VSub_DollarName '$commit_sha3')
                    <'\n'>
                    <'283b48219aee9a4105f6cab337e789065c82c2b9 '>
                    ($ Id.VSub_DollarName '$commit_sha2')
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [{<sort>}]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<expect_notes_union>}
            )
          ]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_union>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 1352
              stdin_parts: [
                ($ Id.VSub_DollarName '$commit_sha15')
                <' 15th\n'>
                <'y notes on 15th commit\n'>
                <'\n'>
                <'z notes on 15th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha14')
                <' 14th\n'>
                <'y notes on 14th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha13')
                <' 13th\n'>
                <'y notes on 13th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha12')
                <' 12th\n'>
                <'y notes on 12th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha11')
                <' 11th\n'>
                <'z notes on 11th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha10')
                <' 10th\n'>
                <'x notes on 10th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha9')
                <' 9th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha8')
                <' 8th\n'>
                <'z notes on 8th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha7')
                <' 7th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha6')
                <' 6th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha5')
                <' 5th\n'>
                <'y notes on 5th commit\n'>
                <'\n'>
                <'z notes on 5th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha4')
                <' 4th\n'>
                <'y notes on 4th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha3')
                <' 3rd\n'>
                <'y notes on 3rd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha2')
                <' 2nd\n'>
                <'z notes on 2nd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha1')
                <' 1st\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'merge z into y with "union" strategy => Non-conflicting 3-way merge'>)} {(SQ <'\n'> <'\tgit notes merge --strategy=union z &&\n'> <'\tverify_notes y union\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/y^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <
'merge z into y with "union" strategy overriding per-ref configuration => Non-conflicting 3-way merge'
          >
        )
      } 
      {
        (SQ <'\n'> <'\tgit -c notes.y.mergeStrategy="theirs" notes merge --strategy=union z &&\n'> 
          <'\tverify_notes y union\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/y^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <
'merge z into y with "union" per-ref overriding general configuration => Non-conflicting 3-way merge'
          >
        )
      } 
      {
        (SQ <'\n'> 
          <
'\tgit -c notes.y.mergeStrategy="union" -c notes.mergeStrategy="theirs" notes merge z &&\n'
          > <'\tverify_notes y union\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (y)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/y^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <
'merge z into y with "manual" per-ref only checks specific ref configuration => Conflicting 3-way merge'
          >
        )
      } 
      {
        (SQ <'\n'> <'\ttest_must_fail git -c notes.z.mergeStrategy="union" notes merge z &&\n'> 
          <'\tgit notes merge --abort &&\n'> <'\tverify_notes y y\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 1495
                  stdin_parts: [
                    <'d682107b8bf7a7aea1e537a8d5cb6a12b60135f1 '>
                    ($ Id.VSub_DollarName '$commit_sha15')
                    <'\n'>
                    <'5de7ea7ad4f47e7ff91989fb82234634730f75df '>
                    ($ Id.VSub_DollarName '$commit_sha14')
                    <'\n'>
                    <'3a631fdb6f41b05b55d8f4baf20728ba8f6fccbc '>
                    ($ Id.VSub_DollarName '$commit_sha13')
                    <'\n'>
                    <'a66055fa82f7a03fe0c02a6aba3287a85abf7c62 '>
                    ($ Id.VSub_DollarName '$commit_sha12')
                    <'\n'>
                    <'7e3c53503a3db8dd996cb62e37c66e070b44b54d '>
                    ($ Id.VSub_DollarName '$commit_sha11')
                    <'\n'>
                    <'b8d03e173f67f6505a76f6e00cf93440200dd9be '>
                    ($ Id.VSub_DollarName '$commit_sha10')
                    <'\n'>
                    <'851e1638784a884c7dd26c5d41f3340f6387413a '>
                    ($ Id.VSub_DollarName '$commit_sha8')
                    <'\n'>
                    <'357b6ca14c7afd59b7f8b8aaaa6b8b723771135b '>
                    ($ Id.VSub_DollarName '$commit_sha5')
                    <'\n'>
                    <'e2bfd06a37dd2031684a59a6e2b033e212239c78 '>
                    ($ Id.VSub_DollarName '$commit_sha4')
                    <'\n'>
                    <'5772f42408c0dd6f097a7ca2d24de0e78d1c46b1 '>
                    ($ Id.VSub_DollarName '$commit_sha3')
                    <'\n'>
                    <'283b48219aee9a4105f6cab337e789065c82c2b9 '>
                    ($ Id.VSub_DollarName '$commit_sha2')
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [{<sort>}]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<expect_notes_union2>}
            )
          ]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_union2>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 1566
              stdin_parts: [
                ($ Id.VSub_DollarName '$commit_sha15')
                <' 15th\n'>
                <'z notes on 15th commit\n'>
                <'\n'>
                <'y notes on 15th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha14')
                <' 14th\n'>
                <'y notes on 14th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha13')
                <' 13th\n'>
                <'y notes on 13th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha12')
                <' 12th\n'>
                <'y notes on 12th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha11')
                <' 11th\n'>
                <'z notes on 11th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha10')
                <' 10th\n'>
                <'x notes on 10th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha9')
                <' 9th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha8')
                <' 8th\n'>
                <'z notes on 8th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha7')
                <' 7th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha6')
                <' 6th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha5')
                <' 5th\n'>
                <'z notes on 5th commit\n'>
                <'\n'>
                <'y notes on 5th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha4')
                <' 4th\n'>
                <'y notes on 4th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha3')
                <' 3rd\n'>
                <'y notes on 3rd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha2')
                <' 2nd\n'>
                <'z notes on 2nd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha1')
                <' 1st\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'merge y into z with "union" strategy => Non-conflicting 3-way merge'>)} 
      {
        (SQ <'\n'> <'\tgit config core.notesRef refs/notes/z &&\n'> 
          <'\tgit notes merge --strategy=union y &&\n'> <'\tverify_notes z union2\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (z)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/z refs/notes/z^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes z z\n'>
        )
      }
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_span_id: 1642
                  stdin_parts: [
                    <'6be90240b5f54594203e25d9f2f64b7567175aee '>
                    ($ Id.VSub_DollarName '$commit_sha15')
                    <'\n'>
                    <'5de7ea7ad4f47e7ff91989fb82234634730f75df '>
                    ($ Id.VSub_DollarName '$commit_sha14')
                    <'\n'>
                    <'3a631fdb6f41b05b55d8f4baf20728ba8f6fccbc '>
                    ($ Id.VSub_DollarName '$commit_sha13')
                    <'\n'>
                    <'a66055fa82f7a03fe0c02a6aba3287a85abf7c62 '>
                    ($ Id.VSub_DollarName '$commit_sha12')
                    <'\n'>
                    <'7e3c53503a3db8dd996cb62e37c66e070b44b54d '>
                    ($ Id.VSub_DollarName '$commit_sha11')
                    <'\n'>
                    <'b8d03e173f67f6505a76f6e00cf93440200dd9be '>
                    ($ Id.VSub_DollarName '$commit_sha10')
                    <'\n'>
                    <'851e1638784a884c7dd26c5d41f3340f6387413a '>
                    ($ Id.VSub_DollarName '$commit_sha8')
                    <'\n'>
                    <'660311d7f78dc53db12ac373a43fca7465381a7e '>
                    ($ Id.VSub_DollarName '$commit_sha5')
                    <'\n'>
                    <'e2bfd06a37dd2031684a59a6e2b033e212239c78 '>
                    ($ Id.VSub_DollarName '$commit_sha4')
                    <'\n'>
                    <'5772f42408c0dd6f097a7ca2d24de0e78d1c46b1 '>
                    ($ Id.VSub_DollarName '$commit_sha3')
                    <'\n'>
                    <'283b48219aee9a4105f6cab337e789065c82c2b9 '>
                    ($ Id.VSub_DollarName '$commit_sha2')
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [{<sort>}]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<expect_notes_cat_sort_uniq>}
            )
          ]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<expect_log_cat_sort_uniq>}
        )
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 1711
              stdin_parts: [
                ($ Id.VSub_DollarName '$commit_sha15')
                <' 15th\n'>
                <'y notes on 15th commit\n'>
                <'z notes on 15th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha14')
                <' 14th\n'>
                <'y notes on 14th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha13')
                <' 13th\n'>
                <'y notes on 13th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha12')
                <' 12th\n'>
                <'y notes on 12th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha11')
                <' 11th\n'>
                <'z notes on 11th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha10')
                <' 10th\n'>
                <'x notes on 10th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha9')
                <' 9th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha8')
                <' 8th\n'>
                <'z notes on 8th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha7')
                <' 7th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha6')
                <' 6th\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha5')
                <' 5th\n'>
                <'y notes on 5th commit\n'>
                <'z notes on 5th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha4')
                <' 4th\n'>
                <'y notes on 4th commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha3')
                <' 3rd\n'>
                <'y notes on 3rd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha2')
                <' 2nd\n'>
                <'z notes on 2nd commit\n'>
                <'\n'>
                ($ Id.VSub_DollarName '$commit_sha1')
                <' 1st\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'merge y into z with "cat_sort_uniq" strategy => Non-conflicting 3-way merge'>)} 
      {
        (SQ <'\n'> <'\tgit notes merge --strategy=cat_sort_uniq y &&\n'> 
          <'\tverify_notes z cat_sort_uniq\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'reset to pre-merge state (z)'>)} 
      {
        (SQ <'\n'> <'\tgit update-ref refs/notes/z refs/notes/z^1 &&\n'> 
          <'\t# Verify pre-merge state\n'> <'\tverify_notes z z\n'>
        )
      }
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <
'merge y into z with "cat_sort_uniq" strategy configuration option => Non-conflicting 3-way merge'
          >
        )
      } 
      {
        (SQ <'\n'> <'\tgit -c notes.mergeStrategy="cat_sort_uniq" notes merge y &&\n'> 
          <'\tverify_notes z cat_sort_uniq\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)