docs: public final ThrowableSubject hasCauseThat() {
      // provides a more helpful error message if hasCauseThat() methods are chained too deep
      // e.g. assertThat(new Exception()).hCT().hCT()....
      // TODO(diamondm) in keeping with other subjects' behavior this should still NPE if the subject
      // *itself* is null, since there's no context to lose. See also b/37645583
      if (actual() == null) {
        check("getCause()").fail("Causal chain is not deep enough - add a .isNotNull() check?");
        return ignoreCheck()
            .that(
                new Throwable() {
                  @Override
                  public Throwable fillInStackTrace() {
                    setStackTrace(new StackTraceElement[0]); // for old versions of Android
                    return this;
                  }
                });
      }
      return check("getCause()").that(actual().getCause());
    }