/**
 * Provides useful additional {@link org.hamcrest.Matcher}s for use with
 * the {@link org.junit.Assert#assertThat(Object, org.hamcrest.Matcher)}
 * statement
 *
 * @since 4.0
 * @see org.junit.matchers.JUnitMatchers
 */
package org.junit.matchers;