public ModifierMatcher forbidAccess(int accessModif, boolean andAbove) {
		if (andAbove) {
			if (accessModif == Modifier.PRIVATE)
				// This forbids all access.
				return denyAll;
			if (accessModif == 0)
				return this.and(Modifier.PRIVATE, Modifier.PRIVATE);
			if (accessModif == Modifier.PROTECTED)
				return this.and(Modifier.PROTECTED | Modifier.PUBLIC, 0);
			if (accessModif == Modifier.PUBLIC)
				return this.and(Modifier.PUBLIC, 0);
			throw new IllegalArgumentException("" + accessModif);
		} else {
			if (accessModif == 0) {
				return this.and(Modifier.PRIVATE, Modifier.PRIVATE)
						.or(this.and(Modifier.PROTECTED, Modifier.PROTECTED))
						.or(this.and(Modifier.PUBLIC, Modifier.PUBLIC));
			} else
				return this.and(accessModif, 0);
		}
	}