l_list.remove() ;
    void processInput()    {        /*         * Process the selectors that are ready.  For each selector that         * is ready we read some data into a buffer we claim from a buffer         * pool.  Next we create an InputEvent using the buffer and publish         * it using the event notifier/router.         */        Iterator l_list = m_selector.selectedKeys().iterator() ;        while ( l_list.hasNext() )        {            SelectionKey l_key = ( SelectionKey ) l_list.next() ;            ClientKey l_client = ( ClientKey ) l_key.attachment() ;                             if ( l_key.isReadable() )            {                ByteBuffer l_buf = null ;                SocketChannel l_channel = ( SocketChannel ) l_key.channel() ;                // claim a buffer and read & return buffer on errors                 try                {                    l_buf = m_bp.getBuffer( this ) ;                    l_channel.read( l_buf ) ;                }                catch ( ResourceException e )                {                    m_monitor.bufferUnavailable( m_bp, e ) ;                    continue ;                }                catch ( IOException e )                {                    m_monitor.readFailed( l_client, e ) ;                    m_bp.releaseClaim( l_buf, this ) ;                    continue ;                }                                    // report to monitor, create the event, and publish it                m_monitor.inputRecieved( l_client ) ;                InputEvent l_event = new ConcreteInputEvent( l_client, l_buf ) ;                m_router.publish( l_event ) ;                m_bp.releaseClaim( l_buf, this ) ;            }        }    }