public boolean canMoveDown(PaletteEntry entry) {
		PaletteContainer parent = entry.getParent();
		int parentPermission = parent.getUserModificationPermission();
		if (parentPermission < PaletteEntry.PERMISSION_LIMITED_MODIFICATION) {
			return false;
		}

		if (parent.getChildren().indexOf(entry) + 1 != parent.getChildren()
				.size()) {
			return true;
		} else {
			// The given entry is the last child in its parent.
			if (parentPermission != PaletteEntry.PERMISSION_FULL_MODIFICATION
					|| parent.getParent() == null)
				return false;

			// try to place in grand parent
			if (canAdd(parent.getParent(), entry))
				return true;

			// walk parent siblings till we find one it can go into.
			List children = parent.getParent().getChildren();
			int parentIndex = children.indexOf(parent);
			PaletteEntry parentSibling = null;

			for (int i = parentIndex + 1; i < children.size(); i++) {
				parentSibling = (PaletteEntry) children.get(i);
				if (parentSibling instanceof PaletteContainer) {
					if (canAdd((PaletteContainer) parentSibling, entry))
						return true;
				}
			}

			return false;

		}
	}