### Question:
TypeParameterMatcher { public static TypeParameterMatcher find( final Object object, final Class<?> parameterizedSuperclass, final String typeParamName) { final Map<Class<?>, Map<String, TypeParameterMatcher>> findCache = TypeParameterMatcher.findCache.get(); final Class<?> thisClass = object.getClass(); Map<String, TypeParameterMatcher> map = findCache.get(thisClass); if (map == null) { map = new HashMap<String, TypeParameterMatcher>(); findCache.put(thisClass, map); } TypeParameterMatcher matcher = map.get(typeParamName); if (matcher == null) { matcher = get(find0(object, parameterizedSuperclass, typeParamName)); map.put(typeParamName, matcher); } return matcher; } protected  TypeParameterMatcher(); static TypeParameterMatcher get(final Class<?> parameterType); static TypeParameterMatcher find(
            final Object object, final Class<?> parameterizedSuperclass, final String typeParamName); abstract boolean match(Object msg);  }### Answer:
@Test(expected = IllegalStateException.class) public void testUnsolvedParameter() throws Exception { TypeParameterMatcher.find(new TypeQ(), TypeX.class, "B"); }