stopchanging: while (_selector.keys().size()>0)
stopchanging: while (_selector!= null && _selector.keys().size()>0)
        void stop() throws Exception        {            wakeup();            Thread.yield();            // horrid hack until I find a better way            stopchanging: while (_selector.keys().size()>0)            {                   synchronized (this)                {                    try                    {                        Iterator iter =_selector.keys().iterator();                        while (iter.hasNext())                        {                            SelectionKey key = (SelectionKey)iter.next();                            if (key==null)                                continue;                            EndPoint endpoint = (EndPoint)key.attachment();                            if (endpoint!=null)                            {                                try                                {                                    endpoint.close();                                }                                catch(IOException e)                                {                                    Log.ignore(e);                                }                            }                        }                        break stopchanging;                    }                    catch(ConcurrentModificationException e)                    {                        Log.ignore(e);                        wakeup();                        Thread.yield();                    }                }                _idleTimeout.cancelAll();                _retryTimeout.cancelAll();                try                {                    if (_selector != null)                        _selector.close();                }                catch (IOException e)                {                    Log.ignore(e);                }                 _selector=null;            }        }