docs: private void executeListeners() {
      if (!monitor.isOccupiedByCurrentThread()) {
        // iterate by index to avoid concurrent modification exceptions
        for (int i = 0; i < listeners.size(); i++) {
          listeners.get(i).execute();
        }
      }
    }