aspect NOMdevirt { // No Overriding Method syn boolean VirtualMethodAccess.NOMdevirt() { TypeDecl F = isQualified() ? qualifier().type() : hostType(); // Formal type of receiver for(Iterator iter=decl().overriders().iterator(); iter.hasNext();) { MethodDecl mo = (MethodDecl) iter.next(); // Overriding method if (mo.hostType().instanceOf(F)) { // Check if overriding method is in a subclass of F return false; } } return true; } }