import java.util.*; import java.io.*; public class GenericWildcardsInSignatureMatching { List aList = new ArrayList(); void foo(Map>> map) { ; } List findOne(List ld) { return ld; } void anyOrder(List l) {} } aspect WildcardMatcher { declare warning : set(List *) : "set of a list"; declare warning : execution(* foo(Map>>)) : "exact nested wildcard match"; declare warning : execution(* foo(Map>)) : "wildcard nested wildcard match"; declare warning : execution(List findOne(List)) : "super"; declare warning : execution(* anyOrder(List)) : "super wild match"; declare warning : execution(* anyOrder(List)) : "no match - signature is different"; }