public void TestDisposalDoesNotDisposeParentStores()
        {
            DrawableWithDependencies drawable      = null;
            TestTextureStore         textureStore  = null;
            TestSampleStore          sampleStore   = null;
            TestShaderManager        shaderManager = null;

            AddStep("add dependencies", () =>
            {
                Child         = drawable = new DrawableWithDependencies();
                textureStore  = drawable.ParentTextureStore;
                sampleStore   = drawable.ParentSampleStore;
                shaderManager = drawable.ParentShaderManager;
            });

            AddStep("clear children", Clear);
            AddUntilStep("wait for disposal", () => drawable.IsDisposed);

            AddStep("GC", () =>
            {
                drawable = null;

                GC.Collect();
                GC.WaitForPendingFinalizers();
            });

            AddAssert("parent texture store not disposed", () => !textureStore.IsDisposed);
            AddAssert("parent sample store not disposed", () => !sampleStore.IsDisposed);
            AddAssert("parent shader manager not disposed", () => !shaderManager.IsDisposed);
        }
            protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
            {
                var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));

                dependencies.CacheAs <TextureStore>(ParentTextureStore   = new TestTextureStore());
                dependencies.CacheAs <ISampleStore>(ParentSampleStore    = new TestSampleStore());
                dependencies.CacheAs <ShaderManager>(ParentShaderManager = new TestShaderManager());

                return(new DrawableRulesetDependencies(new OsuRuleset(), dependencies));
            }