public boolean filter(FilteringTokenizer tokenizer) {
		if (this.filters == null || this.filters.length == 0) {
			return true;
		}

		if (DEBUG) {
			Log.enter(this);
		}

		while (tokenizer.hasToken()) {
			for (Filter filter : this.filters) {
				tokenizer.mark();

				if (filter.filter(tokenizer)) {
					if (DEBUG) {
						Log.exit(this);
					}
					tokenizer.commit();
					return true;

				} else {
					tokenizer.rollback();
				}
			}

			if (DEBUG) {
				Log.log("Skipping one.");
			}

			tokenizer.skip(1);
		}

		if (DEBUG) {
			Log.fail(this);
		}

		return false;
	}