code: public void fail(Throwable reason) {
      AssertionError ae = null;
      if (reason instanceof AssertionError)
        ae = (AssertionError) reason;
      else {
        ae = new AssertionError();
        ae.initCause(reason);
      }
  
      failure = ae;
      circuit.close();
      throw ae;
    }
docs: Fails the current test with the given {@code reason}, sets the number of expected resumes to 0, and throws the
  {@code reason} as an {@code AssertionError} in the main test thread and in the current thread.
  
  @throws AssertionError wrapping the {@code reason}