public boolean addAll(Collection<? extends E> c) {
        if (c == null)
            throw new NullPointerException();
        if (c == this)
            throw new IllegalArgumentException();
        boolean modified = false;
        boolean notice = false;
        final ReentrantLock lock = this.lock;
        lock.lock();
        try {
        	for (E e : c) {
        		if(q.offer(e)) {
        			modified = true;
        			if (q.peek() == e) {
                    	notice = true;
                    }
        		}
                
        	}
            if(notice) {
            	leader = null;
                available.signal();
            }
                    
        } finally {
            lock.unlock();
        }
        return modified;
    }