### Question:
Assert { public static void startsWith(String string, String requiredPrefix) { startsWith(string, requiredPrefix, () -> "'" + string + "' must start with '" + requiredPrefix + "'"); }  static void isEmpty(Collection<?> values); static void isEmpty(Collection<?> values, Supplier<String> messageSupplier); static void notEmpty(Collection<?> values); static void hasSize(Collection<?> values, int expectedSize); static void hasSize(Collection<?> values, int expectedSize, Supplier<String> messageSupplier); static void notEmpty(Collection<?> values, Supplier<String> messageSupplier); static void equals(T one, T other); static void equals(long one, long other); static void equals(T one, T other, Supplier<String> messageSupplier); static void equals(long one, long other, Supplier<String> messageSupplier); static void isTrue(boolean value, Supplier<String> messageSupplier); static void isFalse(boolean value, Supplier<String> messageSupplier); static void isNull(Object value); static void isNull(Object value, Supplier<String> messageSupplier); static void notNull(Object value); static void notNull(Object value, Supplier<String> messageSupplier); static void startsWith(String string, String requiredPrefix); static void startsWith(String string, String requiredPrefix, Supplier<String> messageSupplier); static void doesNotStartWith(String string, String forbiddenPrefix); static void doesNotStartWith(String string, String forbiddenPrefix, Supplier<String> messageSupplier); static void notNullOrEmpty(String string); static void notNullOrEmpty(String string, Supplier<String> messageSupplier);  }### Answer:
@Test void testStartsWith() throws Exception { Assert.startsWith("abc", "ab"); assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Assert.startsWith("abc", "b")) .withMessage("'abc' must start with 'b'"); assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Assert.startsWith("abc", "b", () -> "some message")) .withMessage("some message"); }