(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'Test notes merging at various fanout levels'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <verify_notes>
      name: verify_notes
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'notes_ref='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'notes_ref='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'notes_ref='> name:notes_ref)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'commit='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'commit='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'commit='> name:commit)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 2))}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {<-f>}
                                {(DQ <expect_notes_> ($ Id.VSub_DollarName notes_ref))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.AndOr
                          children: [
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<-c>}
                                    {<core.notesRef> <Id.Lit_Equals '='> 
                                      (DQ <'refs/notes/'> ($ Id.VSub_DollarName notes_ref))
                                    }
                                    {<notes>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <sort>
                                  more_env: []
                                  words: [{<sort>}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(DQ <output_notes_> ($ Id.VSub_DollarName notes_ref))}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                            (command.Simple
                              blame_tok: <test_cmp>
                              more_env: []
                              words: [
                                {<test_cmp>}
                                {(DQ <expect_notes_> ($ Id.VSub_DollarName notes_ref))}
                                {(DQ <output_notes_> ($ Id.VSub_DollarName notes_ref))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                        )
                      ]
                      spids: [44 56]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  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'>)}
                    {(DQ ($ Id.VSub_DollarName commit))}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ <output_log_> ($ Id.VSub_DollarName notes_ref))}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test_cmp>
                  more_env: []
                  words: [
                    {<test_cmp>}
                    {(DQ <expect_log_> ($ Id.VSub_DollarName notes_ref))}
                    {(DQ <output_log_> ($ Id.VSub_DollarName notes_ref))}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <verify_fanout>
      name: verify_fanout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'notes_ref='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'notes_ref='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'notes_ref='> name:notes_ref)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<rev-parse>}
                    {<--quiet>}
                    {<--verify>}
                    {(DQ <'refs/notes/'> ($ Id.VSub_DollarName notes_ref))}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [
                        {<git>}
                        {<ls-tree>}
                        {<-r>}
                        {<--name-only>}
                        {(DQ <'refs/notes/'> ($ Id.VSub_DollarName notes_ref))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<path>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName path))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Lit_QMark '?'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <'/'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'>
                                        }
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_Colon ':'>
                                      more_env: []
                                      words: [{<Id.Lit_Colon ':'>} {<true>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [
                                            {<echo>}
                                            {
                                              (DQ <'Invalid path '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                  ch: '"'
                                                ) ($ Id.VSub_DollarName path) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Return return>
                                          arg_word: {<1>}
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <verify_no_fanout>
      name: verify_no_fanout
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'notes_ref='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'notes_ref='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'notes_ref='> name:notes_ref)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<rev-parse>}
                    {<--quiet>}
                    {<--verify>}
                    {(DQ <'refs/notes/'> ($ Id.VSub_DollarName notes_ref))}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [
                        {<git>}
                        {<ls-tree>}
                        {<-r>}
                        {<--name-only>}
                        {(DQ <'refs/notes/'> ($ Id.VSub_DollarName notes_ref))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<path>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName path))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Lit_QMark '?'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                                          <Id.Lit_QMark '?'>
                                        }
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_Colon ':'>
                                      more_env: []
                                      words: [{<Id.Lit_Colon ':'>} {<true>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [
                                            {<echo>}
                                            {
                                              (DQ <'Invalid path '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                  ch: '"'
                                                ) ($ Id.VSub_DollarName path) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Return return>
                                          arg_word: {<1>}
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup a few initial commits with notes (notes ref: x)'>)}
        {
          (SQ <'\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tfor i in 1 2 3 4 5\n'> 
            <'\tdo\n'> <'\t\ttest_commit "commit$i" >/dev/null &&\n'> 
            <'\t\tgit notes add -m "notes for commit$i" || return 1\n'> <'\tdone\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'commit_sha1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'commit_sha1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'commit_sha1='> name:commit_sha1)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <git>
                    more_env: []
                    words: [
                      {<git>}
                      {<rev-parse>}
                      {<commit1> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'commit_sha2='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'commit_sha2='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'commit_sha2='> name:commit_sha2)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <git>
                    more_env: []
                    words: [
                      {<git>}
                      {<rev-parse>}
                      {<commit2> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'commit_sha3='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'commit_sha3='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'commit_sha3='> name:commit_sha3)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <git>
                    more_env: []
                    words: [
                      {<git>}
                      {<rev-parse>}
                      {<commit3> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'commit_sha4='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'commit_sha4='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'commit_sha4='> name:commit_sha4)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <git>
                    more_env: []
                    words: [
                      {<git>}
                      {<rev-parse>}
                      {<commit4> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'commit_sha5='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'commit_sha5='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'commit_sha5='> name:commit_sha5)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <git>
                    more_env: []
                    words: [
                      {<git>}
                      {<rev-parse>}
                      {<commit5> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'>}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <cat>
          more_env: []
          words: [{<cat>}]
          redirects: [
            (Redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_tok: <Id.Undefined_Tok ''>
                  stdin_parts: [
                    <'aed91155c7a72c2188e781fdf40e0f3761b299db '>
                    ($ Id.VSub_DollarName commit_sha5)
                    <'\n'>
                    <'99fab268f9d7ee7b011e091a436c78def8eeee69 '>
                    ($ Id.VSub_DollarName commit_sha4)
                    <'\n'>
                    <'953c20ae26c7aa0b428c20693fe38bc687f9d1a9 '>
                    ($ Id.VSub_DollarName commit_sha3)
                    <'\n'>
                    <'6358796131b8916eaa2dde6902642942a1cb37e1 '>
                    ($ Id.VSub_DollarName commit_sha2)
                    <'\n'>
                    <'b02d459c32f0e68f2fe0981033bb34f38776ba47 '>
                    ($ Id.VSub_DollarName commit_sha1)
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [{<sort>}]
          redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_notes_x>})]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      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_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                ($ Id.VSub_DollarName commit_sha5)
                <' commit5\n'>
                <'notes for commit5\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha4)
                <' commit4\n'>
                <'notes for commit4\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha3)
                <' commit3\n'>
                <'notes for commit3\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha2)
                <' commit2\n'>
                <'notes for commit2\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha1)
                <' commit1\n'>
                <'notes for commit1\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'sanity check (x)'>)}
        {(SQ <'\n'> <'\tverify_notes x commit5 &&\n'> <'\tverify_no_fanout x\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'num='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'num='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'num='> name:num)
          op: assign_op.Equal
          rhs: {<300>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <cp>
      more_env: []
      words: [{<cp>} {<expect_log_x>} {<expect_log_y>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Add a few hundred commits w/notes to trigger fanout (x -> y)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/y refs/notes/x &&\n'> 
            <'\tgit config core.notesRef refs/notes/y &&\n'> <'\ti=5 &&\n'> <'\twhile test $i -lt $num\n'> <'\tdo\n'> <'\t\ti=$(($i + 1)) &&\n'> 
            <'\t\ttest_commit "commit$i" >/dev/null &&\n'> <'\t\tgit notes add -m "notes for commit$i" || return 1\n'> <'\tdone &&\n'> 
            <'\ttest "$(git rev-parse refs/notes/y)" != "$(git rev-parse refs/notes/x)" &&\n'> <'\t# Expected number of commits and notes\n'> <'\ttest $(git rev-list HEAD | wc -l) = $num &&\n'> 
            <'\ttest $(git notes list | wc -l) = $num &&\n'> <'\t# 5 first notes unchanged\n'> <'\tverify_notes y commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [{<test_expect_success>} {(SQ <'notes tree has fanout (y)'>)} {(SQ <'verify_fanout y'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'No-op merge (already included) (x => y)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/m refs/notes/y &&\n'> 
            <'\tgit config core.notesRef refs/notes/m &&\n'> <'\tgit notes merge x &&\n'> 
            <'\ttest "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/y)"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Fast-forward merge (y => x)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/m refs/notes/x &&\n'> <'\tgit notes merge y &&\n'> 
            <'\ttest "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/y)"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <cat>
          more_env: []
          words: [{<cat>}]
          redirects: [
            (Redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_tok: <Id.Undefined_Tok ''>
                  stdin_parts: [
                    <'9f506ee70e20379d7f78204c77b334f43d77410d '>
                    ($ Id.VSub_DollarName commit_sha3)
                    <'\n'>
                    <'23a47d6ea7d589895faf800752054818e1e7627b '>
                    ($ Id.VSub_DollarName commit_sha2)
                    <'\n'>
                    <'b02d459c32f0e68f2fe0981033bb34f38776ba47 '>
                    ($ Id.VSub_DollarName commit_sha1)
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [{<sort>}]
          redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_notes_z>})]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      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_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                ($ Id.VSub_DollarName commit_sha5)
                <' commit5\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha4)
                <' commit4\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha3)
                <' commit3\n'>
                <'notes for commit3\n'>
                <'\n'>
                <'appended notes for commit3\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha2)
                <' commit2\n'>
                <'new notes for commit2\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha1)
                <' commit1\n'>
                <'notes for commit1\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'change some of the initial 5 notes (x -> 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 "new notes for commit2" commit2 &&\n'> 
            <'\tgit notes append -m "appended notes for commit3" commit3 &&\n'> <'\tgit notes remove commit4 &&\n'> <'\tgit notes remove commit5 &&\n'> <'\tverify_notes z commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'notes tree has no fanout (z)'>)}
        {(SQ <'verify_no_fanout z'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cp>
      more_env: []
      words: [{<cp>} {<expect_log_z>} {<expect_log_m>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'successful merge without conflicts (y => z)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/m refs/notes/z &&\n'> 
            <'\tgit config core.notesRef refs/notes/m &&\n'> <'\tgit notes merge y &&\n'> <'\tverify_notes m commit5 &&\n'> <'\t# x/y/z unchanged\n'> 
            <'\tverify_notes x commit5 &&\n'> <'\tverify_notes y commit5 &&\n'> <'\tverify_notes z commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'notes tree still has fanout after merge (m)'>)}
        {(SQ <'verify_fanout m'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_w>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                ($ Id.VSub_DollarName commit_sha5)
                <' commit5\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha4)
                <' commit4\n'>
                <'other notes for commit4\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha3)
                <' commit3\n'>
                <'other notes for commit3\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha2)
                <' commit2\n'>
                <'notes for commit2\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha1)
                <' commit1\n'>
                <'other notes for commit1\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'introduce conflicting changes (y -> w)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/w refs/notes/y &&\n'> 
            <'\tgit config core.notesRef refs/notes/w &&\n'> <'\tgit notes add -f -m "other notes for commit1" commit1 &&\n'> 
            <'\tgit notes add -f -m "other notes for commit3" commit3 &&\n'> <'\tgit notes add -f -m "other notes for commit4" commit4 &&\n'> <'\tgit notes remove commit5 &&\n'> 
            <'\tverify_notes w commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_m>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                ($ Id.VSub_DollarName commit_sha5)
                <' commit5\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha4)
                <' commit4\n'>
                <'other notes for commit4\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha3)
                <' commit3\n'>
                <'other notes for commit3\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha2)
                <' commit2\n'>
                <'new notes for commit2\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha1)
                <' commit1\n'>
                <'other notes for commit1\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'successful merge using "ours" strategy (z => w)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/m refs/notes/w &&\n'> 
            <'\tgit config core.notesRef refs/notes/m &&\n'> <'\tgit notes merge -s ours z &&\n'> <'\tverify_notes m commit5 &&\n'> <'\t# w/x/y/z unchanged\n'> 
            <'\tverify_notes w commit5 &&\n'> <'\tverify_notes x commit5 &&\n'> <'\tverify_notes y commit5 &&\n'> <'\tverify_notes z commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'notes tree still has fanout after merge (m)'>)}
        {(SQ <'verify_fanout m'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_m>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                ($ Id.VSub_DollarName commit_sha5)
                <' commit5\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha4)
                <' commit4\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha3)
                <' commit3\n'>
                <'notes for commit3\n'>
                <'\n'>
                <'appended notes for commit3\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha2)
                <' commit2\n'>
                <'new notes for commit2\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha1)
                <' commit1\n'>
                <'other notes for commit1\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'successful merge using "theirs" strategy (z => w)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/m refs/notes/w &&\n'> 
            <'\tgit notes merge -s theirs z &&\n'> <'\tverify_notes m commit5 &&\n'> <'\t# w/x/y/z unchanged\n'> <'\tverify_notes w commit5 &&\n'> 
            <'\tverify_notes x commit5 &&\n'> <'\tverify_notes y commit5 &&\n'> <'\tverify_notes z commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'notes tree still has fanout after merge (m)'>)}
        {(SQ <'verify_fanout m'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_m>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                ($ Id.VSub_DollarName commit_sha5)
                <' commit5\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha4)
                <' commit4\n'>
                <'other notes for commit4\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha3)
                <' commit3\n'>
                <'other notes for commit3\n'>
                <'\n'>
                <'notes for commit3\n'>
                <'\n'>
                <'appended notes for commit3\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha2)
                <' commit2\n'>
                <'new notes for commit2\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha1)
                <' commit1\n'>
                <'other notes for commit1\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'successful merge using "union" strategy (z => w)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/m refs/notes/w &&\n'> 
            <'\tgit notes merge -s union z &&\n'> <'\tverify_notes m commit5 &&\n'> <'\t# w/x/y/z unchanged\n'> <'\tverify_notes w commit5 &&\n'> 
            <'\tverify_notes x commit5 &&\n'> <'\tverify_notes y commit5 &&\n'> <'\tverify_notes z commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'notes tree still has fanout after merge (m)'>)}
        {(SQ <'verify_fanout m'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_m>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                ($ Id.VSub_DollarName commit_sha5)
                <' commit5\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha4)
                <' commit4\n'>
                <'other notes for commit4\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha3)
                <' commit3\n'>
                <'appended notes for commit3\n'>
                <'notes for commit3\n'>
                <'other notes for commit3\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha2)
                <' commit2\n'>
                <'new notes for commit2\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha1)
                <' commit1\n'>
                <'other notes for commit1\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'successful merge using "cat_sort_uniq" strategy (z => w)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/m refs/notes/w &&\n'> 
            <'\tgit notes merge -s cat_sort_uniq z &&\n'> <'\tverify_notes m commit5 &&\n'> <'\t# w/x/y/z unchanged\n'> <'\tverify_notes w commit5 &&\n'> 
            <'\tverify_notes x commit5 &&\n'> <'\tverify_notes y commit5 &&\n'> <'\tverify_notes z commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'notes tree still has fanout after merge (m)'>)}
        {(SQ <'verify_fanout m'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'fails to merge using "manual" strategy (z => w)'>)}
        {
          (SQ <'\n'> <'\tgit update-ref refs/notes/m refs/notes/w &&\n'> 
            <'\ttest_must_fail git notes merge z\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'notes tree still has fanout after merge (m)'>)}
        {(SQ <'verify_fanout m'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <cat>
          more_env: []
          words: [{<cat>}]
          redirects: [
            (Redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<EOF>}
                  here_end_tok: <Id.Undefined_Tok ''>
                  stdin_parts: [
                    ($ Id.VSub_DollarName commit_sha3)
                    <'\n'>
                    ($ Id.VSub_DollarName commit_sha4)
                    <'\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [{<sort>}]
          redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_conflicts>})]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<expect_conflict_> ($ Id.VSub_DollarName commit_sha3)}
        )
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'<<<<<<< refs/notes/m\n'>
                <'other notes for commit3\n'>
                <'=======\n'>
                <'notes for commit3\n'>
                <'\n'>
                <'appended notes for commit3\n'>
                <'>>>>>>> refs/notes/z\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<expect_conflict_> ($ Id.VSub_DollarName commit_sha4)}
        )
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [<'other notes for commit4\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'verify conflict entries (with no fanout)'>)}
        {
          (SQ <'\n'> <'\tls .git/NOTES_MERGE_WORKTREE >output_conflicts &&\n'> 
            <'\ttest_cmp expect_conflicts output_conflicts &&\n'> <'\t( for f in $(cat expect_conflicts); do\n'> 
            <'\t\ttest_cmp "expect_conflict_$f" ".git/NOTES_MERGE_WORKTREE/$f" ||\n'> <'\t\texit 1\n'> <'\tdone ) &&\n'> 
            <'\t# Verify that current notes tree (pre-merge) has not changed (m == w)\n'> <'\ttest "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/w)"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect_log_m>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                ($ Id.VSub_DollarName commit_sha5)
                <' commit5\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha4)
                <' commit4\n'>
                <'other notes for commit4\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha3)
                <' commit3\n'>
                <'other notes for commit3\n'>
                <'\n'>
                <'appended notes for commit3\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha2)
                <' commit2\n'>
                <'new notes for commit2\n'>
                <'\n'>
                ($ Id.VSub_DollarName commit_sha1)
                <' commit1\n'>
                <'other notes for commit1\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'resolve and finalize merge (z => w)'>)}
        {
          (SQ <'\n'> <'\tcat >.git/NOTES_MERGE_WORKTREE/$commit_sha3 <<EOF &&\n'> 
            <'other notes for commit3\n'> <'\n'> <'appended notes for commit3\n'> <'EOF\n'> <'\tgit notes merge --commit &&\n'> 
            <'\tverify_notes m commit5 &&\n'> <'\t# w/x/y/z unchanged\n'> <'\tverify_notes w commit5 &&\n'> <'\tverify_notes x commit5 &&\n'> 
            <'\tverify_notes y commit5 &&\n'> <'\tverify_notes z commit5\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'notes tree still has fanout after merge (m)'>)}
        {(SQ <'verify_fanout m'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)