docs: function Watch(paths,      // @arg PathArray
                 options,    // @arg Object   - { delay, action, verbose, ... }
                 callback) { // @arg Function - callback(err:Error):void
  //{@dev
      _if(!Array.isArray(paths),  "invalid Watch(paths)");
      _if(!_isObject(options),    "invalid Watch(,options)");
      _if(!_isFunction(callback), "invalid Watch(,,callback)");
  //}@dev
  
      var that = this;
  
      this._options = options || {};
  
      if (this._options.verbose) {
          console.log("  --- watch ---");
      }
      paths.forEach(function(path) {
          if (_isFile(path)) {
              Watch_file(that, path, function(diff) { // { path: { dir, size, mtime }, ... }
                  callback(null, diff);
              });
          } else if (_isDir(path)) {
              Watch_dir(that, path, function(diff) { // { path: { dir, size, mtime }, ... }
                  callback(null, diff);
              }, options);
          }
      });
  }