(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 <'Two way merge with read-tree -m -u $H $M\n'> <'\n'> 
                <'This is identical to t1001, but uses -u to update the work tree as well.\n'> <'\n'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/lib-read-tree.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <compare_change>
      name: compare_change
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [
                {<sed>}
                {<-e>}
                {(SQ <'1{/^diff --git /d;}'>)}
                {<-e>}
                {(SQ <'2{/^index /d;}'>)}
                {<-e>}
                {(SQ <'/^--- /d; /^+++ /d; /^@@ /d;'>)}
                {<-e>}
                {(SQ <'s/^\\(.[0-7][0-7][0-7][0-7][0-7][0-7]\\) '>) (DQ ($ Id.VSub_DollarName _x40)) 
                  (SQ <' /\\1 X /'>)
                }
                {(DQ ($ Id.VSub_Number 1))}
              ]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<current>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_cmp>
              more_env: []
              words: [{<test_cmp>} {<expected>} {<current>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <check_cache_at>
      name: check_cache_at
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'clean_if_empty='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'clean_if_empty='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'clean_if_empty='> name:clean_if_empty)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [{<git>} {<diff-files>} {<-->} {(DQ ($ Id.VSub_Number 1))}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName clean_if_empty))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_SingleQuote '\''>
                  pattern: (pat.Words words:[{(SQ )}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ ($ Id.VSub_Number 1) <': clean'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_QMark '?'>
                  pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ ($ Id.VSub_Number 1) <': dirty'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: 
                (case_arg.Word
                  w: {(DQ ($ Id.VSub_Number 2) <','> ($ Id.VSub_DollarName clean_if_empty))}
                )
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <clean>
                  pattern: (pat.Words words:[{<clean> <Id.Lit_Comma ','>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <clean>
                  pattern: 
                    (pat.Words
                      words: [{<clean> <Id.Lit_Comma ','> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <false>
                      more_env: []
                      words: [{<false>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <dirty>
                  pattern: (pat.Words words:[{<dirty> <Id.Lit_Comma ','>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <false>
                      more_env: []
                      words: [{<false>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <dirty>
                  pattern: 
                    (pat.Words
                      words: [{<dirty> <Id.Lit_Comma ','> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<setup>}
        {
          (SQ <'echo frotz >frotz &&\n'> <'     echo nitfol >nitfol &&\n'> 
            <'     echo bozbar >bozbar &&\n'> <'     echo rezrov >rezrov &&\n'> <'     git update-index --add nitfol bozbar rezrov &&\n'> 
            <'     treeH=$(git write-tree) &&\n'> <'     echo treeH $treeH &&\n'> <'     git ls-tree $treeH &&\n'> <'\n'> 
            <'     echo gnusto >bozbar &&\n'> <'     git update-index --add frotz bozbar --force-remove rezrov &&\n'> 
            <'     git ls-files --stage >M.out &&\n'> <'     treeM=$(git write-tree) &&\n'> <'     echo treeM $treeM &&\n'> <'     git ls-tree $treeM &&\n'> 
            <'     sum bozbar frotz nitfol >M.sum &&\n'> <'     git diff-tree $treeH $treeM'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'1, 2, 3 - no carry forward'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >1-3.out &&\n'> 
            <'     cmp M.out 1-3.out &&\n'> <'     sum bozbar frotz nitfol >actual3.sum &&\n'> <'     cmp M.sum actual3.sum &&\n'> 
            <'     check_cache_at bozbar clean &&\n'> <'     check_cache_at frotz clean &&\n'> <'     check_cache_at nitfol clean'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'4 - carry forward local addition.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo "+100644 X 0\tyomin" >expected &&\n'> <'     echo yomin >yomin &&\n'> 
            <'     git update-index --add yomin &&\n'> <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >4.out &&\n'> 
            <'     test_might_fail git diff -U0 --no-index M.out 4.out >4diff.out &&\n'> <'     compare_change 4diff.out expected &&\n'> <'     check_cache_at yomin clean &&\n'> 
            <'     sum bozbar frotz nitfol >actual4.sum &&\n'> <'     cmp M.sum actual4.sum &&\n'> <'     echo yomin >yomin1 &&\n'> <'     diff yomin yomin1 &&\n'> 
            <'     rm -f yomin1'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'5 - carry forward local addition.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     read_tree_u_must_succeed -m -u $treeH &&\n'> <'     echo yomin >yomin &&\n'> 
            <'     git update-index --add yomin &&\n'> <'     echo yomin yomin >yomin &&\n'> <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> 
            <'     git ls-files --stage >5.out &&\n'> <'     test_might_fail git diff -U0 --no-index M.out 5.out >5diff.out &&\n'> 
            <'     compare_change 5diff.out expected &&\n'> <'     check_cache_at yomin dirty &&\n'> <'     sum bozbar frotz nitfol >actual5.sum &&\n'> 
            <'     cmp M.sum actual5.sum &&\n'> <'     : dirty index should have prevented -u from checking it out. &&\n'> 
            <'     echo yomin yomin >yomin1 &&\n'> <'     diff yomin yomin1 &&\n'> <'     rm -f yomin1'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'6 - local addition already has the same.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo frotz >frotz &&\n'> <'     git update-index --add frotz &&\n'> 
            <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >6.out &&\n'> <'     test_cmp M.out 6.out &&\n'> 
            <'     check_cache_at frotz clean &&\n'> <'     sum bozbar frotz nitfol >actual3.sum &&\n'> <'     cmp M.sum actual3.sum &&\n'> 
            <'     echo frotz >frotz1 &&\n'> <'     diff frotz frotz1 &&\n'> <'     rm -f frotz1'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'7 - local addition already has the same.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo frotz >frotz &&\n'> <'     git update-index --add frotz &&\n'> 
            <'     echo frotz frotz >frotz &&\n'> <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >7.out &&\n'> 
            <'     test_cmp M.out 7.out &&\n'> <'     check_cache_at frotz dirty &&\n'> <'     sum bozbar frotz nitfol >actual7.sum &&\n'> 
            <'     if cmp M.sum actual7.sum; then false; else :; fi &&\n'> <'     : dirty index should have prevented -u from checking it out. &&\n'> 
            <'     echo frotz frotz >frotz1 &&\n'> <'     diff frotz frotz1 &&\n'> <'     rm -f frotz1'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'8 - conflicting addition.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo frotz frotz >frotz &&\n'> <'     git update-index --add frotz &&\n'> 
            <'     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'9 - conflicting addition.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo frotz frotz >frotz &&\n'> <'     git update-index --add frotz &&\n'> 
            <'     echo frotz >frotz &&\n'> <'     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'10 - path removed.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo rezrov >rezrov &&\n'> <'     git update-index --add rezrov &&\n'> 
            <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >10.out &&\n'> <'     cmp M.out 10.out &&\n'> 
            <'     sum bozbar frotz nitfol >actual10.sum &&\n'> <'     cmp M.sum actual10.sum'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'11 - dirty path removed.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo rezrov >rezrov &&\n'> <'     git update-index --add rezrov &&\n'> 
            <'     echo rezrov rezrov >rezrov &&\n'> <'     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'12 - unmatching local changes being removed.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo rezrov rezrov >rezrov &&\n'> <'     git update-index --add rezrov &&\n'> 
            <'     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'13 - unmatching local changes being removed.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo rezrov rezrov >rezrov &&\n'> <'     git update-index --add rezrov &&\n'> 
            <'     echo rezrov >rezrov &&\n'> <'     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'>
          )
        }
      ]
      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:{<expected>})
        (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: [<'-100644 X 0\tnitfol\n'> <'+100644 X 0\tnitfol\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'14 - unchanged in two heads.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo nitfol nitfol >nitfol &&\n'> <'     git update-index --add nitfol &&\n'> 
            <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >14.out &&\n'> 
            <'     test_must_fail git diff -U0 --no-index M.out 14.out >14diff.out &&\n'> <'     compare_change 14diff.out expected &&\n'> <'     sum bozbar frotz >actual14.sum &&\n'> 
            <'     grep -v nitfol M.sum > expected14.sum &&\n'> <'     cmp expected14.sum actual14.sum &&\n'> <'     sum bozbar frotz nitfol >actual14a.sum &&\n'> 
            <'     if cmp M.sum actual14a.sum; then false; else :; fi &&\n'> <'     check_cache_at nitfol clean &&\n'> <'     echo nitfol nitfol >nitfol1 &&\n'> 
            <'     diff nitfol nitfol1 &&\n'> <'     rm -f nitfol1'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'15 - unchanged in two heads.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo nitfol nitfol >nitfol &&\n'> <'     git update-index --add nitfol &&\n'> 
            <'     echo nitfol nitfol nitfol >nitfol &&\n'> <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >15.out &&\n'> 
            <'     test_must_fail git diff -U0 --no-index M.out 15.out >15diff.out &&\n'> <'     compare_change 15diff.out expected &&\n'> <'     check_cache_at nitfol dirty &&\n'> 
            <'     sum bozbar frotz >actual15.sum &&\n'> <'     grep -v nitfol M.sum > expected15.sum &&\n'> <'     cmp expected15.sum actual15.sum &&\n'> 
            <'     sum bozbar frotz nitfol >actual15a.sum &&\n'> <'     if cmp M.sum actual15a.sum; then false; else :; fi &&\n'> 
            <'     echo nitfol nitfol nitfol >nitfol1 &&\n'> <'     diff nitfol nitfol1 &&\n'> <'     rm -f nitfol1'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'16 - conflicting local change.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo bozbar bozbar >bozbar &&\n'> <'     git update-index --add bozbar &&\n'> 
            <'     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'17 - conflicting local change.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo bozbar bozbar >bozbar &&\n'> <'     git update-index --add bozbar &&\n'> 
            <'     echo bozbar bozbar bozbar >bozbar &&\n'> <'     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'18 - local change already having a good result.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo gnusto >bozbar &&\n'> <'     git update-index --add bozbar &&\n'> 
            <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >18.out &&\n'> <'     test_cmp M.out 18.out &&\n'> 
            <'     check_cache_at bozbar clean &&\n'> <'     sum bozbar frotz nitfol >actual18.sum &&\n'> <'     cmp M.sum actual18.sum'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'19 - local change already having a good result, further modified.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo gnusto >bozbar &&\n'> <'     git update-index --add bozbar &&\n'> 
            <'     echo gnusto gnusto >bozbar &&\n'> <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >19.out &&\n'> 
            <'     test_cmp M.out 19.out &&\n'> <'     check_cache_at bozbar dirty &&\n'> <'     sum frotz nitfol >actual19.sum &&\n'> 
            <'     grep -v bozbar  M.sum > expected19.sum &&\n'> <'     cmp expected19.sum actual19.sum &&\n'> <'     sum bozbar frotz nitfol >actual19a.sum &&\n'> 
            <'     if cmp M.sum actual19a.sum; then false; else :; fi &&\n'> <'     echo gnusto gnusto >bozbar1 &&\n'> <'     diff bozbar bozbar1 &&\n'> <'     rm -f bozbar1'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'20 - no local change, use new tree.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo bozbar >bozbar &&\n'> <'     git update-index --add bozbar &&\n'> 
            <'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'> <'     git ls-files --stage >20.out &&\n'> <'     test_cmp M.out 20.out &&\n'> 
            <'     check_cache_at bozbar clean &&\n'> <'     sum bozbar frotz nitfol >actual20.sum &&\n'> <'     cmp M.sum actual20.sum'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'21 - no local change, dirty cache.'>)}
        {
          (SQ <'rm -f .git/index nitfol bozbar rezrov frotz &&\n'> 
            <'     read_tree_u_must_succeed --reset -u $treeH &&\n'> <'     echo bozbar >bozbar &&\n'> <'     git update-index --add bozbar &&\n'> 
            <'     echo gnusto gnusto >bozbar &&\n'> <'     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'DF vs DF/DF case setup.'>)}
        {
          (SQ <'rm -f .git/index &&\n'> <'     echo DF >DF &&\n'> 
            <'     git update-index --add DF &&\n'> <'     treeDF=$(git write-tree) &&\n'> <'     echo treeDF $treeDF &&\n'> 
            <'     git ls-tree $treeDF &&\n'> <'\n'> <'     rm -f DF &&\n'> <'     mkdir DF &&\n'> <'     echo DF/DF >DF/DF &&\n'> 
            <'     git update-index --add --remove DF DF/DF &&\n'> <'     treeDFDF=$(git write-tree) &&\n'> <'     echo treeDFDF $treeDFDF &&\n'> 
            <'     git ls-tree $treeDFDF &&\n'> <'     git ls-files --stage >DFDF.out'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'DF vs DF/DF case test.'>)}
        {
          (SQ <'rm -f .git/index &&\n'> <'     rm -fr DF &&\n'> <'     echo DF >DF &&\n'> 
            <'     git update-index --add DF &&\n'> <'     read_tree_u_must_succeed -m -u $treeDF $treeDFDF &&\n'> 
            <'     git ls-files --stage >DFDFcheck.out &&\n'> <'     test_cmp DFDF.out DFDFcheck.out &&\n'> <'     check_cache_at DF/DF clean'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)