src/main/java/org/fest/assertions/ThrowableAssert.java
public @NotNull ThrowableAssert isExactlyInstanceOf(@NotNull Class<?> type) {
    isNotNull();
    checkNotNull(type);
    Class<?> current = actual.getClass();
    if (type.equals(current)) {
      return this;
    }
    failIfCustomMessageIsSet();
    throw failure(format("expected exactly the same type:<%s> but was:<%s>", type, current));
  }
public @NotNull ThrowableAssert isExactlyInstanceOf(@NotNull Class<?> type) {
    isNotNull();
    checkNotNull(type);
    Class<?> current = actual.getClass();
    if (type.equals(current)) {
      return this;
    }
    failIfCustomMessageIsSet();
    throw failure(format("expected exactly the same type:<%s> but was:<%s>", type, current));
  }
Verifies that the actual {@code Throwable} is an instance of the given type. In order for the assertion to pass,
the type of the actual {@code Throwable} has to be exactly the same as the given type.

@param type the type to check the actual {@code Throwable} against.
@return this assertion object.
@throws AssertionError       if the actual {@code Throwable} is {@code null}.
@throws AssertionError       if the actual {@code Throwable} is not an instance of the given type.
@throws NullPointerException if the given type is {@code null}.