@Override
	public void sortByValueAceHigh()
	{
		final List<Item> unsorted=new Vector<Item>();
		unsorted.addAll(getContents());
		if(unsorted.size()==0) return;
		// first step is to get them out of the deck and
		// then re-add them in order.
		for(int u=0;u<unsorted.size();u++)
			removeCard((PlayingCard)unsorted.get(u));

		// now we pick them out in order
		while(unsorted.size()>0)
		{
			PlayingCard card=(PlayingCard)unsorted.get(0);
			int cardBitEncodedValue=card.getBitEncodedValue();
			for(int u=1;u<unsorted.size();u++)
			{
				final PlayingCard card2=(PlayingCard)unsorted.get(u);
				final int card2BitEncodedValue=card2.getBitEncodedValue();
				if((card2BitEncodedValue<cardBitEncodedValue)
				||((card2BitEncodedValue==cardBitEncodedValue)
					&&(card2.getBitEncodedSuit()<card.getBitEncodedSuit())))
				{
					card=card2;
					cardBitEncodedValue=card.getBitEncodedValue();
				}
			}
			unsorted.remove(card);
			addCard(card);
		}
	}