@Test
public void testValid() {

    Class<?>[] targetParamTypes = store.getTargetParamsTypes(SubGeneric1.class, "set", new Class<?>[] { Object.class, Object.class });
    assertNotNull(targetParamTypes);
    assertEquals(Number.class, targetParamTypes[0]);
    assertEquals(String.class, targetParamTypes[1]);
    // try again
    targetParamTypes = store.getTargetParamsTypes(SubGeneric1.class, "set", new Class<?>[] { Object.class, Object.class });
    assertNotNull(targetParamTypes);
    assertEquals(Number.class, targetParamTypes[0]);
    assertEquals(String.class, targetParamTypes[1]);
    targetParamTypes = store.getTargetParamsTypes(SubGeneric1.class, "get", new Class<?>[] { Object.class });
    assertNotNull(targetParamTypes);
    assertEquals(Number.class, targetParamTypes[0]);
    targetParamTypes = store.getTargetParamsTypes(SubGeneric1.class, "put",
            new Class<?>[] { Object.class, Object.class, boolean.class });
    assertNotNull(targetParamTypes);
    assertEquals(Number.class, targetParamTypes[0]);
    assertEquals(String.class, targetParamTypes[1]);
    assertEquals(boolean.class, targetParamTypes[2]);
}