public virtual void SetUp()
        {
            lock (this)
            {
                if (shutdownHook == null)
                {
                    shutdownHook = new _Thread_117(this);
                    // On windows accidentally open files or memory
                    // mapped regions may prevent files from being deleted.
                    // Suggesting a GC increases the likelihood that our
                    // test repositories actually get removed after the
                    // tests, even in the case of failure.
                    Runtime.GetRuntime().AddShutdownHook(shutdownHook);
                }
            }
            RecursiveDelete(TestId(), trash, true, false);
            mockSystemReader = new MockSystemReader();
            mockSystemReader.userGitConfig = new FileBasedConfig(new FilePath(trash, "usergitconfig"
                                                                              ), FS.DETECTED);
            CeilTestDirectories(GetCeilings());
            SystemReader.SetInstance(mockSystemReader);
            long now = mockSystemReader.GetCurrentTime();
            int  tz  = mockSystemReader.GetTimezone(now);

            author    = new PersonIdent("J. Author", "*****@*****.**");
            author    = new PersonIdent(author, now, tz);
            committer = new PersonIdent("J. Committer", "*****@*****.**");
            committer = new PersonIdent(committer, now, tz);
            WindowCacheConfig c = new WindowCacheConfig();

            c.SetPackedGitLimit(128 * WindowCacheConfig.KB);
            c.SetPackedGitWindowSize(8 * WindowCacheConfig.KB);
            c.SetPackedGitMMAP(useMMAP);
            c.SetDeltaBaseCacheLimit(8 * WindowCacheConfig.KB);
            WindowCache.Reconfigure(c);
        }