### Question:
PercentileTimer implements Timer { public double percentile(double p) { long[] counts = new long[PercentileBuckets.length()]; for (int i = 0; i < counts.length; ++i) { counts[i] = counterFor(i).count(); } double v = PercentileBuckets.percentile(counts, p); return v / 1e9; } private  PercentileTimer(Registry registry, Id id, long min, long max); private  PercentileTimer(
      Registry registry,
      Id id,
      long min,
      long max,
      AtomicReferenceArray<Counter> counters); static PercentileTimer get(Registry registry, Id id); static IdBuilder<Builder> builder(Registry registry); @Override Id id(); @Override Iterable<Measurement> measure(); @Override boolean hasExpired(); @Override void record(long amount, TimeUnit unit); @Override T record(Callable<T> rf); @Override void record(Runnable rf); double percentile(double p); @Override long count(); @Override long totalTime();  }### Answer:
@Test public void percentile() { Registry r = newRegistry(); PercentileTimer t = PercentileTimer.get(r, r.createId("test")); checkPercentiles(t, 0); }