// don't cause a ClassCastException for TypeParameterElement.
TypeElement wildcardsElement = typeElementOf("Wildcards");
List<? extends ExecutableElement> methods =
ElementFilter.methodsIn(wildcardsElement.getEnclosedElements());
assertEquals(2, methods.size());
ExecutableElement one = methods.get(0);
ExecutableElement two = methods.get(1);
assertEquals("one", one.getSimpleName().toString());
assertEquals("two", two.getSimpleName().toString());
TypeMirrorSet typeMirrorSet = new TypeMirrorSet();
assertTrue(typeMirrorSet.add(one.getReturnType()));
assertFalse(typeMirrorSet.add(two.getReturnType()));
DeclaredType captureOne = (DeclaredType) typeUtil.capture(one.getReturnType());
assertTrue(typeMirrorSet.add(captureOne));
DeclaredType captureTwo = (DeclaredType) typeUtil.capture(two.getReturnType());
assertFalse(typeMirrorSet.add(captureTwo));
// Reminder: captureOne is Map<?#123 extends T, ?#456 super U>
TypeVariable extendsT = (TypeVariable) captureOne.getTypeArguments().get(0);
assertTrue(typeMirrorSet.add(extendsT));
assertTrue(typeMirrorSet.add(extendsT.getLowerBound())); // NoType