@Override
 protected long getSizeImpl() {
   if (isFile()) {
     synchronized (file) {
       return file.getSize();
     }
   }
   return 0L;
 }
 // #204874 - some servers return ending '/' for directories => remove it
 private String getParentDirectory() {
   synchronized (file) {
     return RemoteUtils.sanitizeDirectoryPath(file.getParentDirectory());
   }
 }
 @Override
 protected long getTimestampImpl() {
   synchronized (file) {
     return file.getTimestamp();
   }
 }
 @Override
 public boolean isLink() {
   synchronized (file) {
     return file.isLink();
   }
 }
 @Override
 public boolean isDirectory() {
   synchronized (file) {
     return file.isDirectory();
   }
 }
 @Override
 public String getName() {
   synchronized (file) {
     return file.getName();
   }
 }