@Override
	public boolean resetDeckBackTo52Cards()
	{
		if((cardsCache==null)||(cardsCache.size()==0))
			return false;

		// first retreive all our cards by looping
		// through our cached list.  If we already
		// have a card, make sure its faced-down
		for(int i=0;i<cardsCache.size();i++)
		{
			final PlayingCard card=(PlayingCard)cardsCache.get(i);
			if(card.owner()!=owner())
				addCard(card);
			else
				card.turnFaceDown();
		}
		// next destroy and clear any hands we may
		// be managing.
		for(int h=hands.size()-1;h>=0;h--)
			((Item)hands.elementAt(h,2)).destroy();
		hands.clear();

		// if something went wrong (because a player cast
		// disintegrate on their cards or something) we
		// just ditch the entire deck and rebuild it.
		if(numberOfCards()<52)
		{
			for(int i=0;i<cardsCache.size();i++)
				cardsCache.get(i).destroy();
			cardsCache.clear();
			final Vector allCards=makeAllCards();
			for(int i=0;i<allCards.size();i++)
				addCard((PlayingCard)allCards.elementAt(i));
			cardsCache=getContents();
		}
		return numberOfCards()==52;
	}