(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 <'merge simplification'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <note>
      name: note
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<tag>} {(DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <unnote>
      name: unnote
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<name-rev>} {<--tags>} {<--stdin>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [
                    {<sed>}
                    {<-e>}
                    {
                      (DQ <'s|'> ($ Id.VSub_DollarName _x40) <' (tags/'> <Id.Lit_BadBackslash '\\'> 
                        <'([^)]*'> <Id.Lit_BadBackslash '\\'> <')) |'> <Id.Lit_BadBackslash '\\'> <'1 |g'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<setup>}
        {
          (SQ <'\n'> <'\techo "Hi there" >file &&\n'> <'\techo "initial" >lost &&\n'> 
            <'\tgit add file lost &&\n'> <'\ttest_tick && git commit -m "Initial file and lost" &&\n'> <'\tnote A &&\n'> <'\n'> 
            <'\tgit branch other-branch &&\n'> <'\n'> <'\techo "Hello" >file &&\n'> <'\techo "second" >lost &&\n'> <'\tgit add file lost &&\n'> 
            <'\ttest_tick && git commit -m "Modified file and lost" &&\n'> <'\tnote B &&\n'> <'\n'> <'\tgit checkout other-branch &&\n'> <'\n'> <'\techo "Hello" >file &&\n'> 
            <'\t>lost &&\n'> <'\tgit add file lost &&\n'> <'\ttest_tick && git commit -m "Modified the file identically" &&\n'> 
            <'\tnote C &&\n'> <'\n'> <'\techo "This is a stupid example" >another-file &&\n'> <'\tgit add another-file &&\n'> 
            <'\ttest_tick && git commit -m "Add another file" &&\n'> <'\tnote D &&\n'> <'\n'> <'\ttest_tick &&\n'> <'\ttest_must_fail git merge -m "merge" master &&\n'> 
            <'\t>lost && git commit -a -m "merge" &&\n'> <'\tnote E &&\n'> <'\n'> <'\techo "Yet another" >elif &&\n'> <'\tgit add elif &&\n'> 
            <'\ttest_tick && git commit -m "Irrelevant change" &&\n'> <'\tnote F &&\n'> <'\n'> <'\tgit checkout master &&\n'> <'\techo "Yet another" >elif &&\n'> 
            <'\tgit add elif &&\n'> <'\ttest_tick && git commit -m "Another irrelevant change" &&\n'> <'\tnote G &&\n'> <'\n'> 
            <'\ttest_tick && git merge -m "merge" other-branch &&\n'> <'\tnote H &&\n'> <'\n'> <'\techo "Final change" >file &&\n'> 
            <'\ttest_tick && git commit -a -m "Final change" &&\n'> <'\tnote I &&\n'> <'\n'> <'\tgit symbolic-ref HEAD refs/heads/unrelated &&\n'> <'\tgit rm -f "*" &&\n'> 
            <'\techo "Unrelated branch" >side &&\n'> <'\tgit add side &&\n'> <'\ttest_tick && git commit -m "Side root" &&\n'> <'\tnote J &&\n'> <'\n'> 
            <'\tgit checkout master &&\n'> <'\ttest_tick && git merge --allow-unrelated-histories -m "Coolest" unrelated &&\n'> <'\tnote K &&\n'> 
            <'\n'> <'\techo "Immaterial" >elif &&\n'> <'\tgit add elif &&\n'> <'\ttest_tick && git commit -m "Last" &&\n'> 
            <'\tnote L\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FMT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FMT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FMT='> name:FMT)
          op: assign_op.Equal
          rhs: {(SQ <'tformat:%P \t%H | %s'>)}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <check_outcome>
      name: check_outcome
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'outcome='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'outcome='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'outcome='> name:outcome)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [c]
                  iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)}])
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ ($ Id.VSub_DollarName c))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})]
                )
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'param='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'param='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'param='> name:param)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Star '*'))}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <test_expect_>
                  more_env: []
                  words: [
                    {<test_expect_> ($ Id.VSub_DollarName outcome)}
                    {(DQ <'log '> ($ Id.VSub_DollarName param))}
                    {
                      (SQ <'\n'> <'\t\tgit log --pretty="$FMT" --parents $param |\n'> 
                        <'\t\tunnote >actual &&\n'> <'\t\tsed -e "s/^.*\t\\([^ ]*\\) .*/\\1/" >check <actual &&\n'> <'\t\ttest_cmp expect check\n'> <'\t'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <check_result>
      name: check_result
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <check_outcome>
              more_env: []
              words: [{<check_outcome>} {<success>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <'L K J I H G F E D C B A'>)} {<--full-history>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <'K I H E C B A'>)} {<--full-history>} {<-->} {<file>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <'K I H E C B A'>)} {<--full-history>} {<--topo-order>} {<-->} {<file>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <'K I H E C B A'>)} {<--full-history>} {<--date-order>} {<-->} {<file>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <'I E C B A'>)} {<--simplify-merges>} {<-->} {<file>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <'I B A'>)} {<-->} {<file>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <'I B A'>)} {<--topo-order>} {<-->} {<file>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <H>)} {<--first-parent>} {<-->} {<another-file>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <check_result>
      more_env: []
      words: [{<check_result>} {(SQ <'E C B A'>)} {<--full-history>} {<E>} {<-->} {<lost>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'full history simplification without parent'>)}
        {
          (SQ <'\n'> <'\tprintf "%s\\n" E C B A >expect &&\n'> 
            <'\tgit log --pretty="$FMT" --full-history E -- lost |\n'> <'\tunnote >actual &&\n'> <'\tsed -e "s/^.*\t\\([^ ]*\\) .*/\\1/" >check <actual &&\n'> 
            <'\ttest_cmp expect check\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--full-diff is not affected by --parents'>)}
        {
          (SQ <'\n'> <'\tgit log -p --pretty="%H" --full-diff -- file >expected &&\n'> 
            <'\tgit log -p --pretty="%H" --full-diff --parents -- file >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)