@Test
public void testSignatureWithGenericExtends()
{
String sig = "public static <T extends java.lang.Object, U extends java.lang.Object> T[] copyOf(U[], int, java.lang.Class<? extends T[]>)";
MemberSignatureParts msp = MemberSignatureParts.fromBytecodeSignature("java.util.Arrays", sig);
List<String> modList = msp.getModifiers();
assertEquals(2, modList.size());
assertEquals("public", modList.get(0));
assertEquals("static", modList.get(1));
Map<String, String> genMap = msp.getGenerics();
assertEquals(2, genMap.size());
assertEquals(true, genMap.containsKey("T"));
assertEquals(true, genMap.containsKey("U"));
assertEquals("java.lang.Object", genMap.get("T"));
assertEquals("java.lang.Object", genMap.get("U"));
assertEquals("T[]", msp.getReturnType());
assertEquals("copyOf", msp.getMemberName());
List<String> paramTypes = msp.getParamTypes();
assertEquals(3, paramTypes.size());
assertEquals("U[]", paramTypes.get(0));
assertEquals("int", paramTypes.get(1));
assertEquals("java.lang.Class<? extends T[]>", paramTypes.get(2));