@Override
  public Iterator<CacheEntryEvent<? extends K, ? extends V>> iterator() {
    return new Iterator<>() {
      boolean hasNext = true;

      @Override
      public boolean hasNext() {
        return hasNext;
      }

      @Override
      public CacheEntryEvent<K, V> next() {
        if (!hasNext()) {
          throw new NoSuchElementException();
        }
        hasNext = false;
        return JCacheEntryEvent.this;
      }
    };
  }
@Test
  public void iterable() {
    var tester = new IteratorTester<CacheEntryEvent<? extends Integer, ? extends Integer>>(
        6, IteratorFeature.UNMODIFIABLE, event, IteratorTester.KnownOrder.KNOWN_ORDER) {
      @Override
      protected Iterator<CacheEntryEvent<? extends Integer, ? extends Integer>> newTargetIterator() {
        return event.iterator();
      }
    };
    tester.test();
    tester.testForEachRemaining();
  }