boolean traverseGroup(boolean next) {
		Control root = computeTabRoot();
		Widget group = computeTabGroup();
		Widget[] list = root.computeTabList();
		int length = list.length;
		int index = 0;
		while (index < length) {
			if (list[index] == group)
				break;
			index++;
		}
		/*
		 * It is possible (but unlikely), that application code could have
		 * disposed the widget in focus in or out events. Ensure that a disposed
		 * widget is not accessed.
		 */
		if (index == length)
			return false;
		int start = index, offset = (next) ? 1 : -1;
		while ((index = ((index + offset + length) % length)) != start) {
			Widget widget = list[index];
			if (!widget.isDisposed() && widget.setTabGroupFocus(next)) {
				return true;
			}
		}
		if (group.isDisposed())
			return false;
		return group.setTabGroupFocus(next);
	}