public void TestTransform()
        {
            // Define variables and constants
            ModelInstanceManager     mim   = new ModelInstanceManager();
            ConstantBuffer <Vector4> fsCB  = BufferFactory.NewConstantBuffer <Vector4>().WithUsage(ResourceUsage.DiscardWrite);
            FragmentShader           fs    = new FragmentShader(@"Tests\SimpleFS.cso", new ConstantBufferBinding(0U, "MaterialProperties", fsCB));
            Material            testMat    = new Material("TestMat", fs);
            SceneLayer          testLayer  = Scene.CreateLayer("TestLayer");
            ModelInstanceHandle testHandle = mim.AllocateInstance(testMat.Index, 0U, testLayer.Index, Transform.DEFAULT_TRANSFORM);

            // Set up context


            // Execute
            testHandle.Transform = new Transform(Vector3.ONE * 4f, Quaternion.IDENTITY, Vector3.ONE * -15f);

            // Assert outcome
            Assert.AreEqual(new Transform(Vector3.ONE * 4f, Quaternion.IDENTITY, Vector3.ONE * -15f), testHandle.Transform);
            testHandle.Dispose();
            testLayer.Dispose();
            mim.Dispose();
            testMat.Dispose();
            fs.Dispose();
            fsCB.Dispose();
        }
 /// <summary>
 /// Disposes this cache, making it no longer usable, and releasing all resources it created (including vertex/index buffers,
 /// instance buffers, transform buffers, etc).
 /// </summary>
 public void Dispose()
 {
     lock (staticMutationLock) {
         activeCaches.Remove(ID);
         activeCacheList.Remove(this);
     }
     lock (instanceMutationLock) {
         if (isDisposed)
         {
             return;
         }
         GC.RemoveMemoryPressure(sizeof(uint) * 2 * (NumModels + 1));
         vertexComponentBuffers.ForEach(buffer => buffer.Dispose());
         indices.Dispose();
         // ReSharper disable ImpureMethodCallOnReadonlyValueField R# bug
         componentStartPointsAlloc.Dispose();
         indexStartPointsAlloc.Dispose();
         // ReSharper restore ImpureMethodCallOnReadonlyValueField
         instanceManager.Dispose();
         isDisposed = true;
         assembledInputLayouts.ForEach(ail => ail.Value.Dispose());
         assembledInputLayouts.Clear();
     }
 }