private Item getItem(int position, int lower, int upper) { Item pointer; if (position > upper || position < lower) { throw new IndexOutOfBoundsException(); } if (position < size / 2) { pointer = start.next; for(int i = 0; i < position; i++) { pointer = pointer.next; } } else { pointer = end; for(int i = size(); i > position; i--) { pointer = pointer.prev; } } return pointer; }