@SuppressWarnings("unchecked")
	@Override public synchronized J put(K key, J value)
	{
		final ArrayList<J> newList;
		if (list == null)
		{
			newList=new ArrayList<J>(0);
			newList.add(value);
		}
		else
		{
			if(containsKey(key))
			{
				if((list.size()>0)&&(list.get(0)==value))
					return value;
			}
			newList=(ArrayList<J>)list.clone();
			if(containsKey(key))
				newList.remove(value);
			if(newList.size()==0)
				newList.add(value);
			else
				newList.add(0, value);
		}
		list=newList;
		return super.put(key, value);
	}