private void processChange(String path, WatcherOp op) {
      if (SystemInfo.isWindows && op == WatcherOp.RECDIRTY) {
        myNotificationSink.notifyReset(path);
        return;
      }

      if ((op == WatcherOp.CHANGE || op == WatcherOp.STATS) && isRepetition(path)) {
        if (LOG.isTraceEnabled()) LOG.trace("repetition: " + path);
        return;
      }

      if (SystemInfo.isMac) {
        path = Normalizer.normalize(path, Normalizer.Form.NFC);
      }

      switch (op) {
        case STATS, CHANGE -> myNotificationSink.notifyDirtyPath(path);
        case CREATE, DELETE -> myNotificationSink.notifyPathCreatedOrDeleted(path);
        case DIRTY -> myNotificationSink.notifyDirtyDirectory(path);
        case RECDIRTY -> myNotificationSink.notifyDirtyPathRecursive(path);
        default -> LOG.error("Unexpected op: " + op);
      }
    }
private void processChange(String path, WatcherOp op)