private Entry entry(int index) {
        if (index < 0 || index >= m_size)
            throw new IndexOutOfBoundsException("Index: " + index
                                                + ", Size: " + m_size);
        Entry e = m_header;
        if (index < (m_size >> 1)) {
            for (int i = 0; i <= index; i++)
                e = e.m_next;
        } else {
            for (int i = m_size; i > index; i--)
                e = e.m_previous;
        }
        return e;
    }