checkLegalOverride(munger.getSignature(), existingMunger.getSignature());
	public void addInterTypeMunger(ConcreteTypeMunger munger) {		ResolvedMember sig = munger.getSignature();		if (sig == null) {			interTypeMungers.add(munger);			return;		}				//System.err.println("add: " + munger + " to " + this.getClassName() + " with " + interTypeMungers);		if (sig.getKind() == Member.METHOD) {			if (!compareToExistingMembers(munger, getMethods())) return;			if (this.isInterface()) {				if (!compareToExistingMembers(munger, 						Arrays.asList(world.resolve(OBJECT).getDeclaredMethods()).iterator())) return;			}		} else if (sig.getKind() == Member.FIELD) {			if (!compareToExistingMembers(munger, Arrays.asList(getDeclaredFields()).iterator())) return;		} else {			if (!compareToExistingMembers(munger, Arrays.asList(getDeclaredMethods()).iterator())) return;		}				// now compare to existingMungers		for (Iterator i = interTypeMungers.iterator(); i.hasNext(); ) {			ConcreteTypeMunger existingMunger = (ConcreteTypeMunger)i.next();			if (conflictingSignature(existingMunger.getSignature(), munger.getSignature())) {				//System.err.println("match " + munger + " with " + existingMunger);				if (isVisible(munger.getSignature().getModifiers(),							munger.getAspectType(), existingMunger.getAspectType()))				{					//System.err.println("    is visible");					int c = compareMemberPrecedence(sig, existingMunger.getSignature());					if (c == 0) {						c = getWorld().comparePrecedence(munger.getAspectType(), existingMunger.getAspectType());					}					//System.err.println("       compare: " + c);					if (c < 0) {						// the existing munger dominates the new munger						return;					} else if (c > 0) {						// the new munger dominates the existing one						i.remove();						break;					} else {						interTypeConflictError(munger, existingMunger);						interTypeConflictError(existingMunger, munger);						return;					}									}			}		}		//System.err.println("adding: " + munger + " to " + this);		interTypeMungers.add(munger);	}