InstanceThat { @Factory @SuppressWarnings("unchecked") public static <T, T2> AndChainMatcher.Builder<T> isInstanceThat(Class<T2> clazz, Matcher<? super T2> m) { return (AndChainMatcher.Builder) AndChainMatcher.both(Is.is(IsInstanceOf.instanceOf(clazz)), m); }  @Factory @SuppressWarnings("unchecked") static AndChainMatcher.Builder<T> instanceThat(Class<T2> clazz, Matcher<? super T2> m); @Factory @SuppressWarnings("unchecked") static AndChainMatcher.Builder<T> instanceThat(Class<T2> clazz, Matcher<? super T2>... m); @Factory @SuppressWarnings("unchecked") static AndChainMatcher.Builder<T> isInstanceThat(Class<T2> clazz, Matcher<? super T2> m); @Factory @SuppressWarnings("unchecked") static Matcher<T> isInstanceThat(Class<T2> clazz, Matcher<? super T2>... m);  }
@Test public void test_syntax() { Object o = Integer.valueOf(2); assertThat(o, isInstanceThat(Integer.class, greaterThan(1))); }