/** Adds a new entry. */
  public final void add(long timestamp, long value) {
    final long now = getNow();
    removeOldBuckets(now);

    Bucket bucket;
    if (buckets.isEmpty() || (bucket = buckets.getFirst()).deadline < timestamp) {
      // Create new bucket.
      bucket = new Bucket(now + bucketSizeMillis);
      buckets.addFirst(bucket);
    }

    bucket.elements++;
    currentCount++;
    bucket.sum += value;
    currentSum += value;
  }