@Timed(name = "TimedBean_Timed", group = "Annotated")
  @Metered(name = "TimeBean_Metered", group = "Annotated", type = "someType")
  @ExceptionMetered(name = "TimedBean_exceptions", group = "Annotated")
  public void calculateSomething(int modifier) {
    Preconditions.checkArgument(modifier > 0, "modifier must be greater than zero");

    long maybeThrow = exceptionModulo == 0 ? 0 : exceptionTracker.incrementAndGet();
    // give some additional probability of exceptions
    long loopCount = random.nextInt(modifier * 10);

    for (int x = 1; x<=loopCount; x++) {
      if ( maybeThrow > 0 && maybeThrow % exceptionModulo == 0 ) {
        throw new RuntimeException("ouch");
      }
      // should give some mild variance in performance of the hasher
      int v = ((x << 5) & 0xFF) + 1;
      Hashing.md5().newHasher()
             .putInt(x)
             .putString(RandomStringUtils.random(v))
             .hash();
    }
  }