private void changeCachedResource(SaveableCachedResource <T> newCachedResource)
 {
     if (currentCachedResource != null)
     {
         currentCachedResource.AllowClose = true;
     }
     currentCachedResource = newCachedResource;
     if (currentCachedResource != null)
     {
         currentCachedResource.AllowClose = false;
     }
 }
        public T loadObject(String filename)
        {
            //Check the cahce
            SaveableCachedResource <T> cachedResource = EditorController.ResourceProvider.ResourceCache[filename] as SaveableCachedResource <T>;

            if (cachedResource == null)
            {
                //Missed open real file
                using (XmlTextReader xmlReader = new XmlTextReader(EditorController.ResourceProvider.openFile(filename)))
                {
                    cachedResource = new SaveableTypeControllerCachedResource <T>(filename, (T)EditorController.XmlSaver.restoreObject(xmlReader), this);
                    EditorController.ResourceProvider.ResourceCache.add(cachedResource);
                }
            }
            changeCachedResource(cachedResource);
            return(cachedResource.Saveable);
        }