class BlockingObserver extends AtomicReference<Disposable> implements Observer<T>, Disposable {

    @Override
    public void dispose() {
        if (DisposableHelper.dispose(this)) {
            queue.offer(TERMINATED);
        }
    }

    public  BlockingObserver(Queue<Object> queue);

}