private void interceptorMove(File from, File to) throws IOException {
   interceptor.afterMove(from, to);
   interceptor.doMove(from, to);
   // the doMove works asynchronusly. lets give him some time ...
   for (int i = 0; i < 30; i++) {
     waitALittleBit(200);
     if (!from.exists() || to.exists()) {
       break;
     }
   }
 }
  private boolean interceptorDelete(File file) throws IOException {
    interceptor.doDelete(file);
    interceptor.afterDelete(file);

    // the doDelete works asynchronusly. lets give him some time ...
    for (int i = 0; i < 30; i++) {
      waitALittleBit(200);
      if (!file.exists()) {
        break;
      }
    }
    return true; // interceptor handled the delete
  }
 private boolean move(File from, File to) throws IOException {
   boolean move = interceptor.beforeMove(from, to);
   if (move) {
     interceptorMove(from, to);
     return true; // interceptor handled the move
   } else {
     return false; // interceptor refused handling the move
   }
 }
 private boolean delete(File file) throws IOException {
   boolean delete = interceptor.beforeDelete(file);
   if (delete) {
     interceptorDelete(file);
     return true; // interceptor handled the delete
   } else {
     return false; // interceptor refused handling the delete
   }
 }