def updated?
      current_watched = watched
      if @last_watched.size != current_watched.size
        @watched = current_watched
        true
      else
        current_updated_at = updated_at(current_watched)
        if @last_update_at < current_updated_at
          @watched    = current_watched
          @updated_at = current_updated_at
          true
        else
          false
        end
      end
    end
def updated?
      current_watched = watched
      if @last_watched.size != current_watched.size
        @watched = current_watched
        true
      else
        current_updated_at = updated_at(current_watched)
        if @last_update_at < current_updated_at
          @watched    = current_watched
          @updated_at = current_updated_at
          true
        else
          false
        end
      end
    end
It accepts two parameters on initialization. The first is an array
 of files and the second is an optional hash of directories. The hash must
 have directories as keys and the value is an array of extensions to be
 watched under that directory.

 This method must also receive a block that will be called once a path
 changes. The array of files and list of directories cannot be changed
 after FileUpdateChecker has been initialized.
 Check if any of the entries were updated. If so, the watched and/or
 updated_at values are cached until the block is executed via +execute+
 or +execute_if_updated+.