anchor.diff:      return "Hello world";
   };
   
  -// And measure the time with Metrics
  +// and decorate the supplier with a Metrics timer
   Try.CheckedSupplier<String> timedSupplier = Metrics.timedCheckedSupplier(supplier, timer);
   
  -// And decorate it with a CircuitBreaker
  +// and decorate the supplier with a CircuitBreaker
   Try.CheckedSupplier<String> circuitBreakerAndTimedSupplier = CircuitBreaker
           .decorateCheckedSupplier(timedSupplier, circuitBreaker);
   
   String value = circuitBreakerAndTimedSupplier.get();
   
  -// Then the counter of metrics should be one and the
  +// Then the Metrics execution counter should be 1
   assertThat(timer.getCount()).isEqualTo(1);
   // and the mean time should be greater than 2[s]
   assertThat(timer.getSnapshot().getMean()).isGreaterThan(2);
  
positive.code:         .build();
  CircuitBreaker circuitBreaker = circuitBreakerRegistry.circuitBreaker("testName", circuitBreakerConfig);
  
  circuitBreaker.recordFailure(new RuntimeException());
  // CircuitBreaker is still CLOSED, because 1 failure is allowed
  assertThat(circuitBreaker.getState()).isEqualTo(CircuitBreaker.State.CLOSED);
  
negative.code: }, circuitBreaker);
  Try result = Try.run(checkedRunnable);
  
  //Then the SocketTimeoutException did not trigger the CircuitBreaker, but is rethrown instead.
  assertThat(result.isFailure()).isTrue();
  // and the CircuitBreaker is still CLOSED, because SocketTimeoutException was ignored
  assertThat(circuitBreaker.getState()).isEqualTo(CircuitBreaker.State.CLOSED);
  // and the returned exception is of type IOException
  assertThat(result.failed().get()).isInstanceOf(IOException.class);
  ----
  
  