public ModifierMatcher forceAccess(int accessModif, boolean andAbove) {
		if (andAbove) {
			if (accessModif == Modifier.PRIVATE)
				return this;
			if (accessModif == 0)
				return this.and(Modifier.PRIVATE, 0);

			ModifierMatcher result = this.and(Modifier.PUBLIC, PUBLIC);
			if (accessModif == Modifier.PROTECTED)
				return result.or(this.and(Modifier.PROTECTED,
						Modifier.PROTECTED));
			if (accessModif == Modifier.PUBLIC)
				return result;
			throw new IllegalArgumentException("" + accessModif);
		} else {
			if (accessModif == 0)
				return this.and(Modifier.PRIVATE | Modifier.PROTECTED
						| Modifier.PUBLIC, 0);
			else
				return this.and(accessModif, accessModif);
		}
	}