@Override
 public long getLength(@NotNull VirtualFile file) {
   final FileInfo fileInfo = myFsCache.getInfo(file);
   return fileInfo != null ? fileInfo.length : DEFAULT_LENGTH;
 }
 @Override
 public long getTimeStamp(@NotNull VirtualFile file) {
   final FileInfo fileInfo = myFsCache.getInfo(file);
   return fileInfo != null ? fileInfo.getTimestamp() : DEFAULT_TIMESTAMP;
 }
 @Override
 public boolean isDirectory(@NotNull VirtualFile file) {
   final FileInfo fileInfo = myFsCache.getInfo(file);
   return fileInfo != null && isSet(fileInfo.attributes, FileInfo.FILE_ATTRIBUTE_DIRECTORY);
 }
 @Override
 public boolean isWritable(@NotNull VirtualFile file) {
   final FileInfo fileInfo = myFsCache.getInfo(file);
   return fileInfo != null && notSet(fileInfo.attributes, FileInfo.FILE_ATTRIBUTE_READONLY);
 }
 @Override
 public boolean exists(@NotNull VirtualFile fileOrDirectory) {
   if (fileOrDirectory.getParent() == null) return true;
   return myFsCache.getInfo(fileOrDirectory) != null;
 }