@Raw @Override
	public boolean canAddItem(@Raw Item item) {
		if(isTerminated())
			return false;
		if(item == null)
			return false;
		if(item instanceof ItemImplementation
				&& ( ((ItemImplementation)item).getParent() != null || isTerminated()) )
			return false;
		if(item instanceof Container && equalsOrIsDirectOrIndirectParentOf((Container)item))
			return false;
		return (!hasHolder() || getHolder().canAddItem(item))
				&& canAddItemToContainer(item);
	}