if (kind == Member.ADVICE) return true;
	public boolean matches(Member member, World world) {		//XXX performance gains would come from matching on name before resolving		//    to fail fast		ResolvedMember sig = member.resolve(world);		if (sig == null) {			//XXX			if (member.getName().startsWith(NameMangler.PREFIX)) {				return false;			}			world.getLint().unresolvableMember.signal(member.toString(), getSourceLocation());			return false;		}		if (!modifiers.matches(sig.getModifiers())) return false;				if (kind == Member.STATIC_INITIALIZATION) {			//System.err.println("match static init: " + sig.getDeclaringType() + " with " + this);			return declaringType.matchesStatically(sig.getDeclaringType().resolve(world));		} else if (kind == Member.FIELD) {						if (!returnType.matchesStatically(sig.getReturnType().resolve(world))) return false;			if (!name.matches(sig.getName())) return false;			boolean ret = declaringTypeMatch(member.getDeclaringType(), member, world);			//System.out.println("   ret: " + ret);			return ret;		} else if (kind == Member.METHOD) {			if (!returnType.matchesStatically(sig.getReturnType().resolve(world))) return false;			if (!name.matches(sig.getName())) return false;			if (!parameterTypes.matches(world.resolve(sig.getParameterTypes()), TypePattern.STATIC).alwaysTrue()) {				return false;			}			if (!throwsPattern.matches(sig.getExceptions(), world)) return false;			return declaringTypeMatch(member.getDeclaringType(), member, world);		} else if (kind == Member.CONSTRUCTOR) {			if (!parameterTypes.matches(world.resolve(sig.getParameterTypes()), TypePattern.STATIC).alwaysTrue()) {				return false;			}			if (!throwsPattern.matches(sig.getExceptions(), world)) return false;			return declaringType.matchesStatically(member.getDeclaringType().resolve(world));			//return declaringTypeMatch(member.getDeclaringType(), member, world);					}				return false;	}