code: @Override
  	public void run() {
  
  		while (!stopProcessing.get()) {
  
  			try {
  				JawrWatchEvent evt = watchEvents.take();
  				AtomicBoolean processingBundle = bundlesHandler.isProcessingBundle();
  				synchronized (processingBundle) {
  
  					// Wait until processing ends
  					while (processingBundle.get() && !stopProcessing.get()) {
  						try {
  							processingBundle.wait();
  						} catch (InterruptedException e) {
  							LOGGER.debug("Thread interrupted");
  						}
  					}
  				}
  				if (evt != null && !stopProcessing.get()) {
  					process(evt);
  				}
  			} catch (InterruptedException e) {
  				LOGGER.debug("Thread interrupted");
  			}
  		}
  		
  		this.bundlesHandler = null;
  		this.watcher = null;
  	}
docs: /*
  (non-Javadoc)
  
  @see java.lang.Thread#run()