if (!exactType.isAspect() && !pi.isIncludeSubtypes()) { scope.getWorld().showMessage(IMessage.ERROR, "Non-aspect types can only be specified in a declare precedence statement when subtypes are included.  Non-aspect type is : "+exactType.getName(), pi.getSourceLocation(),null); }
    public void resolve(IScope scope) {    	patterns = patterns.resolveBindings(scope, Bindings.NONE, false, false);     	boolean seenStar = false;    	    	for (int i=0; i < patterns.size(); i++) {    		TypePattern pi = patterns.get(i);    		if (pi.isStar()) {    			if (seenStar) {    				scope.getWorld().showMessage(IMessage.ERROR,    					"circularity in declare precedence, '*' occurs more than once",    					pi.getSourceLocation(), null);    				    			}    			seenStar = true;    			continue;    		}    		ResolvedTypeX exactType = pi.getExactType().resolve(scope.getWorld());    		if (exactType == ResolvedTypeX.MISSING) continue;    		for (int j=0; j < patterns.size(); j++) {    			if (j == i) continue;    			TypePattern pj = patterns.get(j);    			if (pj.isStar()) continue;    			if (pj.matchesStatically(exactType)) {    				scope.getWorld().showMessage(IMessage.ERROR,    					"circularity in declare precedence, '" + exactType.getName() +     						"' matches two patterns", pi.getSourceLocation(), pj.getSourceLocation());    			}    		}    	}    	    }