@Override public void close() { final ReentrantLock lock = m_lock; lock.lock(); try { m_state.close(this); } finally { lock.unlock(); } }