public void schedule(Node<K, V> node) {
    Node<K, V> sentinel = findBucket(node.getVariableTime());
    link(sentinel, node);
  }
@Test(dataProvider = "schedule")
  public void schedule(long clock, long duration, int expired) {
    when(cache.evictEntry(captor.capture(), any(), anyLong())).thenReturn(true);

    timerWheel.nanos = clock;
    for (int timeout : new int[] { 25, 90, 240 }) {
      timerWheel.schedule(new Timer(clock + TimeUnit.SECONDS.toNanos(timeout)));
    }
    timerWheel.advance(cache, clock + duration);
    verify(cache, times(expired)).evictEntry(any(), any(), anyLong());

    for (var node : captor.getAllValues()) {
      assertThat(node.getVariableTime()).isAtMost(clock + duration);
    }
  }