docs: function FileEventEmitter(file_path) {
    
    var that          = this
      ;
    
    if (cache[file_path]) {
      
      return cache[file_path];
      
    }
    
    events.EventEmitter.call(this);
    
    fs.watchFile(file_path, fileEventListener);
    
    this.path = file_path;
    
    cache[file_path] = this;
    
    /**************************************************************************/
    
    function fileEventListener(curr, prev) {
      
      that.emit('access', curr, prev);
        
      if (curr.nlink === 0) {
      
        that.emit('destroy', curr, prev);
        
      }
      
      if (+curr.mtime != +prev.mtime) {  
        
        if (curr.isDirectory() && prev.isDirectory()) {
          
          if (curr.nlink > prev.nlink) {
            
            that.emit('add', curr, prev);
            
          } else if (curr.nlink < prev.nlink) {
            
            that.emit('delete', curr, prev);
            
          }
           
        }
        
        that.emit('change', curr, prev);
      
      }
    
    }
    
  }