DoublyLinkedList<Integer> list = new DoublyLinkedList<Integer>(); ListNode2<Integer> node1 = list.add(1); list.remove(node1); list.remove(node1); assertEquals(1, list.size()); assertEquals(new Integer(2), list.first()); assertEquals(node2, list.head()); assertArrayEquals(new Integer[]{2}, list.toArray()); list.remove(node2); assertIsEmpty(list); list.remove(node2); assertEquals(1, list.size()); assertEquals(new Integer(1), list.first()); assertEquals(3, list.size()); assertArrayEquals(new Integer[]{1, 2, 3}, list.toArray()); list.remove(node2); assertEquals(2, list.size()); assertEquals(node1, list.tail());