public Object next() {

                Object o = null;

                // Block if the Queue is empty.
                synchronized (_queue) {
                        if (_queue.size() == 0) {
                                try {
                                        _queue.wait();
                                } catch (InterruptedException e) {
                                        return null;
                                }
                        }

                        // Return the Object.
                        try {
                                o = _queue.firstElement();
                                _queue.removeElementAt(0);
                        } catch (ArrayIndexOutOfBoundsException e) {
                                throw new InternalError("Race hazard in Queue object.");
                        }
                }

                return o;
        }