@Override
  public void save(Code code) {
    store.put(code.code(), code);
  }
@Test
  void bounded() {

    var maxSize = 10;
    Cache<String, Code> cache = Caffeine.newBuilder().maximumSize(maxSize).build();

    var sut = new CaffeineCodeRepo(cache);

    var ids = IntStream.range(0, 100).mapToObj(Integer::toString).toList();

    var redirect = URI.create("https://example.com/callback");
    var clientId = "app";
    ids.forEach(
        id -> {
          var issuedAt = Instant.now();
          var expiresAt = issuedAt.plusSeconds(60);

          var code = new Code(id, issuedAt, expiresAt, redirect, null, clientId, null);
          sut.save(code);
        });

    cache.cleanUp();

    // when
    var remainingCount = ids.stream().map(sut::remove).flatMap(Optional::stream).count();

    // then
    assertEquals(maxSize, remainingCount);
  }