public String getNextComponent(Identifier ident) {
		if (isOr == AND) {
			for (int i = 0; i < matchers.length; i++) {
				String next = matchers[i].getNextComponent(ident);
				if (next != null && matchesSub(ident, next))
					return next;
			}
			return null;
		}
		// OR case
		String next = null;
		for (int i = 0; i < matchers.length; i++) {
			if (!matchesSub(ident, null))
				continue;
			if (next != null
					&& !matchers[i].getNextComponent(ident).equals(next))
				return null;
			next = matchers[i].getNextComponent(ident);
			if (next == null)
				return null;
		}
		return next;
	}