public boolean add(T o) throws InterruptedException{
		sem.acquire();
		boolean wasAdded = false;
		try {
			wasAdded = set.add(o);
			return wasAdded;
		}finally{
			if(!wasAdded){
				sem.release();
			}
		}
	}