You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ch...@apache.org on 2017/07/11 17:54:52 UTC

[07/77] [abbrv] commons-collections git commit: finish generics (minus one class)

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/list/TestCursorableLinkedList.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/list/TestCursorableLinkedList.java b/src/test/org/apache/commons/collections/list/TestCursorableLinkedList.java
index cc02ec4..487d859 100644
--- a/src/test/org/apache/commons/collections/list/TestCursorableLinkedList.java
+++ b/src/test/org/apache/commons/collections/list/TestCursorableLinkedList.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -30,13 +30,13 @@ import org.apache.commons.collections.BulkTest;
 
 /**
  * Test class.
- * 
+ *
  * @version $Revision$ $Date$
- * 
+ *
  * @author Rodney Waldhoff
  * @author Simon Kitching
  */
-public class TestCursorableLinkedList extends TestAbstractLinkedList {
+public class TestCursorableLinkedList<E> extends TestAbstractLinkedList<E> {
     public TestCursorableLinkedList(String testName) {
         super(testName);
     }
@@ -50,39 +50,40 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         junit.textui.TestRunner.main(testCaseName);
     }
 
-    private CursorableLinkedList list = null;
+    private CursorableLinkedList<E> list;
 
     public void setUp() {
-        list = new CursorableLinkedList();
+        list = new CursorableLinkedList<E>();
     }
 
-    public List makeEmptyList() {
-        return new CursorableLinkedList();
+    public CursorableLinkedList<E> makeObject() {
+        return new CursorableLinkedList<E>();
     }
 
+    @SuppressWarnings("unchecked")
     public void testAdd() {
         assertEquals("[]",list.toString());
-        assertTrue(list.add(new Integer(1)));
+        assertTrue(list.add((E) new Integer(1)));
         assertEquals("[1]",list.toString());
-        assertTrue(list.add(new Integer(2)));
+        assertTrue(list.add((E) new Integer(2)));
         assertEquals("[1, 2]",list.toString());
-        assertTrue(list.add(new Integer(3)));
+        assertTrue(list.add((E) new Integer(3)));
         assertEquals("[1, 2, 3]",list.toString());
-        assertTrue(list.addFirst(new Integer(0)));
+        assertTrue(list.addFirst((E) new Integer(0)));
         assertEquals("[0, 1, 2, 3]",list.toString());
-        assertTrue(list.addLast(new Integer(4)));
+        assertTrue(list.addLast((E) new Integer(4)));
         assertEquals("[0, 1, 2, 3, 4]",list.toString());
-        list.add(0,new Integer(-2));
+        list.add(0,(E) new Integer(-2));
         assertEquals("[-2, 0, 1, 2, 3, 4]",list.toString());
-        list.add(1,new Integer(-1));
+        list.add(1,(E) new Integer(-1));
         assertEquals("[-2, -1, 0, 1, 2, 3, 4]",list.toString());
-        list.add(7,new Integer(5));
+        list.add(7,(E) new Integer(5));
         assertEquals("[-2, -1, 0, 1, 2, 3, 4, 5]",list.toString());
 
-        java.util.List list2 = new java.util.LinkedList();
-        list2.add("A");
-        list2.add("B");
-        list2.add("C");
+        java.util.List<E> list2 = new java.util.LinkedList<E>();
+        list2.add((E) "A");
+        list2.add((E) "B");
+        list2.add((E) "C");
 
         assertTrue(list.addAll(list2));
         assertEquals("[-2, -1, 0, 1, 2, 3, 4, 5, A, B, C]",list.toString());
@@ -90,6 +91,7 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertEquals("[-2, -1, 0, A, B, C, 1, 2, 3, 4, 5, A, B, C]",list.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testClear() {
         assertEquals(0,list.size());
         assertTrue(list.isEmpty());
@@ -97,7 +99,7 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertEquals(0,list.size());
         assertTrue(list.isEmpty());
 
-        list.add("element");
+        list.add((E) "element");
         assertEquals(1,list.size());
         assertTrue(!list.isEmpty());
 
@@ -105,8 +107,8 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertEquals(0,list.size());
         assertTrue(list.isEmpty());
 
-        list.add("element1");
-        list.add("element2");
+        list.add((E) "element1");
+        list.add((E) "element2");
         assertEquals(2,list.size());
         assertTrue(!list.isEmpty());
 
@@ -114,10 +116,10 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertEquals(0,list.size());
         assertTrue(list.isEmpty());
 
-        for(int i=0;i<1000;i++) {
-            list.add(new Integer(i));
+        for (int i = 0; i < 1000; i++) {
+            list.add((E) new Integer(i));
         }
-        assertEquals(1000,list.size());
+        assertEquals(1000, list.size());
         assertTrue(!list.isEmpty());
 
         list.clear();
@@ -125,13 +127,14 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertTrue(list.isEmpty());
     }
 
+    @SuppressWarnings("unchecked")
     public void testContains() {
         assertTrue(!list.contains("A"));
-        assertTrue(list.add("A"));
+        assertTrue(list.add((E) "A"));
         assertTrue(list.contains("A"));
-        assertTrue(list.add("B"));
+        assertTrue(list.add((E) "B"));
         assertTrue(list.contains("A"));
-        assertTrue(list.addFirst("a"));
+        assertTrue(list.addFirst((E) "a"));
         assertTrue(list.contains("A"));
         assertTrue(list.remove("a"));
         assertTrue(list.contains("A"));
@@ -139,239 +142,248 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertTrue(!list.contains("A"));
     }
 
+    @SuppressWarnings("unchecked")
     public void testContainsAll() {
         assertTrue(list.containsAll(list));
-        java.util.List list2 = new java.util.LinkedList();
+        java.util.List<E> list2 = new java.util.LinkedList<E>();
         assertTrue(list.containsAll(list2));
-        list2.add("A");
+        list2.add((E) "A");
         assertTrue(!list.containsAll(list2));
-        list.add("B");
-        list.add("A");
+        list.add((E) "B");
+        list.add((E) "A");
         assertTrue(list.containsAll(list2));
-        list2.add("B");
+        list2.add((E) "B");
         assertTrue(list.containsAll(list2));
-        list2.add("C");
+        list2.add((E) "C");
         assertTrue(!list.containsAll(list2));
-        list.add("C");
+        list.add((E) "C");
         assertTrue(list.containsAll(list2));
-        list2.add("C");
+        list2.add((E) "C");
         assertTrue(list.containsAll(list2));
         assertTrue(list.containsAll(list));
     }
 
+    @SuppressWarnings("unchecked")
     public void testCursorNavigation() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-        CursorableLinkedList.Cursor it = list.cursor();
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+        CursorableLinkedList.Cursor<E> it = list.cursor();
         assertTrue(it.hasNext());
         assertTrue(!it.hasPrevious());
-        assertEquals("1",it.next());
+        assertEquals("1", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("1",it.previous());
+        assertEquals("1", it.previous());
         assertTrue(it.hasNext());
         assertTrue(!it.hasPrevious());
-        assertEquals("1",it.next());
+        assertEquals("1", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("2",it.next());
+        assertEquals("2", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("2",it.previous());
+        assertEquals("2", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("2",it.next());
+        assertEquals("2", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("3",it.next());
+        assertEquals("3", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("4",it.next());
+        assertEquals("4", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("5",it.next());
+        assertEquals("5", it.next());
         assertTrue(!it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("5",it.previous());
+        assertEquals("5", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("4",it.previous());
+        assertEquals("4", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("3",it.previous());
+        assertEquals("3", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("2",it.previous());
+        assertEquals("2", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals("1",it.previous());
+        assertEquals("1", it.previous());
         assertTrue(it.hasNext());
         assertTrue(!it.hasPrevious());
         it.close();
     }
 
+    @SuppressWarnings("unchecked")
     public void testCursorSet() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-
-        CursorableLinkedList.Cursor it = list.cursor();
-        assertEquals("1",it.next());
-        it.set("a");
-        assertEquals("a",it.previous());
-        it.set("A");
-        assertEquals("A",it.next());
-        assertEquals("2",it.next());
-        it.set("B");
-        assertEquals("3",it.next());
-        assertEquals("4",it.next());
-        it.set("D");
-        assertEquals("5",it.next());
-        it.set("E");
-        assertEquals("[A, B, 3, D, E]",list.toString());
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+
+        CursorableLinkedList.Cursor<E> it = list.cursor();
+        assertEquals("1", it.next());
+        it.set((E) "a");
+        assertEquals("a", it.previous());
+        it.set((E) "A");
+        assertEquals("A", it.next());
+        assertEquals("2", it.next());
+        it.set((E) "B");
+        assertEquals("3", it.next());
+        assertEquals("4", it.next());
+        it.set((E) "D");
+        assertEquals("5", it.next());
+        it.set((E) "E");
+        assertEquals("[A, B, 3, D, E]", list.toString());
         it.close();
     }
 
+    @SuppressWarnings("unchecked")
     public void testCursorRemove() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
 
-        CursorableLinkedList.Cursor it = list.cursor();
+        CursorableLinkedList.Cursor<E> it = list.cursor();
         try {
             it.remove();
             fail();
-        } catch(IllegalStateException e) {
+        } catch (IllegalStateException e) {
             // expected
         }
-        assertEquals("1",it.next());
-        assertEquals("2",it.next());
-        assertEquals("[1, 2, 3, 4, 5]",list.toString());
+        assertEquals("1", it.next());
+        assertEquals("2", it.next());
+        assertEquals("[1, 2, 3, 4, 5]", list.toString());
         it.remove();
-        assertEquals("[1, 3, 4, 5]",list.toString());
-        assertEquals("3",it.next());
-        assertEquals("3",it.previous());
-        assertEquals("1",it.previous());
+        assertEquals("[1, 3, 4, 5]", list.toString());
+        assertEquals("3", it.next());
+        assertEquals("3", it.previous());
+        assertEquals("1", it.previous());
         it.remove();
-        assertEquals("[3, 4, 5]",list.toString());
+        assertEquals("[3, 4, 5]", list.toString());
         assertTrue(!it.hasPrevious());
-        assertEquals("3",it.next());
+        assertEquals("3", it.next());
         it.remove();
-        assertEquals("[4, 5]",list.toString());
+        assertEquals("[4, 5]", list.toString());
         try {
             it.remove();
-        } catch(IllegalStateException e) {
+        } catch (IllegalStateException e) {
             // expected
         }
-        assertEquals("4",it.next());
-        assertEquals("5",it.next());
+        assertEquals("4", it.next());
+        assertEquals("5", it.next());
         it.remove();
-        assertEquals("[4]",list.toString());
-        assertEquals("4",it.previous());
+        assertEquals("[4]", list.toString());
+        assertEquals("4", it.previous());
         it.remove();
-        assertEquals("[]",list.toString());
+        assertEquals("[]", list.toString());
         it.close();
     }
 
+    @SuppressWarnings("unchecked")
     public void testCursorAdd() {
-        CursorableLinkedList.Cursor it = list.cursor();
-        it.add("1");
-        assertEquals("[1]",list.toString());
-        it.add("3");
-        assertEquals("[1, 3]",list.toString());
-        it.add("5");
-        assertEquals("[1, 3, 5]",list.toString());
-        assertEquals("5",it.previous());
-        it.add("4");
-        assertEquals("[1, 3, 4, 5]",list.toString());
-        assertEquals("4",it.previous());
-        assertEquals("3",it.previous());
-        it.add("2");
-        assertEquals("[1, 2, 3, 4, 5]",list.toString());
+        CursorableLinkedList.Cursor<E> it = list.cursor();
+        it.add((E) "1");
+        assertEquals("[1]", list.toString());
+        it.add((E) "3");
+        assertEquals("[1, 3]", list.toString());
+        it.add((E) "5");
+        assertEquals("[1, 3, 5]", list.toString());
+        assertEquals("5", it.previous());
+        it.add((E) "4");
+        assertEquals("[1, 3, 4, 5]", list.toString());
+        assertEquals("4", it.previous());
+        assertEquals("3", it.previous());
+        it.add((E) "2");
+        assertEquals("[1, 2, 3, 4, 5]", list.toString());
         it.close();
     }
 
+    @SuppressWarnings("unchecked")
     public void testCursorConcurrentModification() {
         // this test verifies that cursors remain valid when the list
         // is modified via other means.
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("5");
-        list.add("7");
-        list.add("9");
-
-        CursorableLinkedList.Cursor c1 = list.cursor();
-        CursorableLinkedList.Cursor c2 = list.cursor();
-        Iterator li = list.iterator();
-        
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "5");
+        list.add((E) "7");
+        list.add((E) "9");
+
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c2 = list.cursor();
+        Iterator<E> li = list.iterator();
+
         // test cursors remain valid when list modified by std Iterator
         // test cursors skip elements removed via ListIterator
-        assertEquals("1",li.next());
-        assertEquals("2",li.next());
+        assertEquals("1", li.next());
+        assertEquals("2", li.next());
         li.remove();
-        assertEquals("3",li.next());
-        assertEquals("1",c1.next());
-        assertEquals("3",c1.next());
-        assertEquals("1",c2.next());
-        
+        assertEquals("3", li.next());
+        assertEquals("1", c1.next());
+        assertEquals("3", c1.next());
+        assertEquals("1", c2.next());
+
         // test cursor c1 can remove elements from previously modified list
         // test cursor c2 skips elements removed via different cursor
         c1.remove();
-        assertEquals("5",c2.next());
-        c2.add("6");
-        assertEquals("5",c1.next());
-        assertEquals("6",c1.next());
-        assertEquals("7",c1.next());
-        
+        assertEquals("5", c2.next());
+        c2.add((E) "6");
+        assertEquals("5", c1.next());
+        assertEquals("6", c1.next());
+        assertEquals("7", c1.next());
+
         // test cursors remain valid when list mod via CursorableLinkedList
         // test cursor remains valid when elements inserted into list before
         // the current position of the cursor.
-        list.add(0, "0");
+        list.add(0, (E) "0");
 
         // test cursor remains valid when element inserted immediately after
         // current element of a cursor, and the element is seen on the
         // next call to the next method of that cursor.
-        list.add(5, "8");
-
-        assertEquals("8",c1.next());
-        assertEquals("9",c1.next());
-        c1.add("10");
-        assertEquals("7",c2.next());
-        assertEquals("8",c2.next());
-        assertEquals("9",c2.next());
-        assertEquals("10",c2.next());
-        
+        list.add(5, (E) "8");
+
+        assertEquals("8", c1.next());
+        assertEquals("9", c1.next());
+        c1.add((E) "10");
+        assertEquals("7", c2.next());
+        assertEquals("8", c2.next());
+        assertEquals("9", c2.next());
+        assertEquals("10", c2.next());
+
         try {
             c2.next();
             fail();
-        } catch (NoSuchElementException nse) {}
-        
+        } catch (NoSuchElementException nse) {
+        }
+
         try {
             li.next();
             fail();
-        } catch (ConcurrentModificationException cme) {}
-        
-        c1.close();  // not necessary
-        c2.close();  // not necessary
+        } catch (ConcurrentModificationException cme) {
+        }
+
+        c1.close(); // not necessary
+        c2.close(); // not necessary
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testCursorNextIndexMid() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("5");
-
-        CursorableLinkedList.Cursor c1 = list.cursor();
-        Iterator li = list.iterator();
-        
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "5");
+
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
+        Iterator<E> li = list.iterator();
+
         // test cursors remain valid when list modified by std Iterator
         // test cursors skip elements removed via ListIterator
         assertEquals("1", li.next());
@@ -382,15 +394,16 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertEquals(1, c1.nextIndex());
         assertEquals("3", c1.next());
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testCursorNextIndexFirst() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("5");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "5");
+
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
-        
         assertEquals(0, c1.nextIndex());
         list.remove(0);
         assertEquals(0, c1.nextIndex());
@@ -398,48 +411,51 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertEquals(1, c1.nextIndex());
         assertEquals("3", c1.next());
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testCursorNextIndexAddBefore() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("5");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "5");
+
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
-        
         assertEquals(0, c1.nextIndex());
         assertEquals("1", c1.next());
-        list.add(0, "0");
+        list.add(0, (E) "0");
         assertEquals(2, c1.nextIndex());
         assertEquals("2", c1.next());
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testCursorNextIndexAddNext() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("5");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "5");
+
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
-        
         assertEquals(0, c1.nextIndex());
-        list.add(0, "0");
+        list.add(0, (E) "0");
         assertEquals(0, c1.nextIndex());
         assertEquals("0", c1.next());
         assertEquals(1, c1.nextIndex());
         assertEquals("1", c1.next());
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testCursorNextIndexAddAfter() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("5");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "5");
+
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
-        
         assertEquals(0, c1.nextIndex());
-        list.add(1, "0");
+        list.add(1, (E) "0");
         assertEquals(0, c1.nextIndex());
         assertEquals("1", c1.next());
         assertEquals(1, c1.nextIndex());
@@ -447,24 +463,25 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextPreviousRemoveIndex1ByList() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
         assertEquals("B", c1.previous());
-        
+
         assertEquals("B", list.remove(1));
-        
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals(true, c1.currentRemovedByAnother);
         assertEquals(null, c1.current);
         assertEquals("C", c1.next.value);
-        
+
         assertEquals("[A, C]", list.toString());
         c1.remove();  // works ok
         assertEquals("[A, C]", list.toString());
@@ -474,22 +491,23 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         } catch (IllegalStateException ex) {}
     }
 
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextRemoveIndex1ByList() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
-        
+
         assertEquals("B", list.remove(1));
-        
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals(false, c1.currentRemovedByAnother);
         assertEquals("A", c1.current.value);
         assertEquals("C", c1.next.value);
-        
+
         assertEquals("[A, C]", list.toString());
         c1.remove();  // works ok
         assertEquals("[C]", list.toString());
@@ -499,23 +517,24 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         } catch (IllegalStateException ex) {}
     }
 
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextRemoveIndex1ByList() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
-        
+
         assertEquals("B", list.remove(1));
-        
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals(true, c1.currentRemovedByAnother);
         assertEquals(null, c1.current);
         assertEquals("C", c1.next.value);
-        
+
         assertEquals("[A, C]", list.toString());
         c1.remove();  // works ok
         assertEquals("[A, C]", list.toString());
@@ -525,24 +544,25 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         } catch (IllegalStateException ex) {}
     }
 
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextNextRemoveIndex1ByList() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
-        list.add("D");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
+        list.add((E) "D");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
         assertEquals("C", c1.next());
-        
+
         assertEquals("B", list.remove(1));
-        
+
         assertEquals(false, c1.nextIndexValid);
         assertEquals(false, c1.currentRemovedByAnother);
         assertEquals("C", c1.current.value);
         assertEquals("D", c1.next.value);
-        
+
         assertEquals("[A, C, D]", list.toString());
         c1.remove();  // works ok
         assertEquals("[A, D]", list.toString());
@@ -553,24 +573,25 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextPreviousRemoveByIterator() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
         assertEquals("B", c1.previous());
-        
+
         c1.remove();
-        
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals(false, c1.currentRemovedByAnother);
         assertEquals(null, c1.current);
         assertEquals("C", c1.next.value);
-        
+
         assertEquals("[A, C]", list.toString());
         try {
             c1.remove();
@@ -578,23 +599,24 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         } catch (IllegalStateException ex) {}
     }
 
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextRemoveByIterator() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
-        
+
         c1.remove();
-        
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals(false, c1.currentRemovedByAnother);
         assertEquals(null, c1.current);
         assertEquals("C", c1.next.value);
-        
+
         assertEquals("[A, C]", list.toString());
         try {
             c1.remove();
@@ -603,23 +625,24 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextPreviousAddIndex1ByList() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
         assertEquals("B", c1.previous());
-        
-        list.add(1, "Z");
-        
+
+        list.add(1, (E) "Z");
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals("B", c1.current.value);
         assertEquals("Z", c1.next.value);
-        
+
         assertEquals("[A, Z, B, C]", list.toString());
         c1.remove();  // works ok
         assertEquals("[A, Z, C]", list.toString());
@@ -629,21 +652,22 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         } catch (IllegalStateException ex) {}
     }
 
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextAddIndex1ByList() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
-        
-        list.add(1, "Z");
-        
+
+        list.add(1, (E) "Z");
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals("A", c1.current.value);
         assertEquals("Z", c1.next.value);
-        
+
         assertEquals("[A, Z, B, C]", list.toString());
         c1.remove();  // works ok
         assertEquals("[Z, B, C]", list.toString());
@@ -653,21 +677,22 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         } catch (IllegalStateException ex) {}
     }
 
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextAddIndex1ByList() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
-        
-        list.add(1, "Z");
-        
+
+        list.add(1, (E) "Z");
+
         assertEquals(false, c1.nextIndexValid);
         assertEquals("B", c1.current.value);
         assertEquals("C", c1.next.value);
-        
+
         assertEquals("[A, Z, B, C]", list.toString());
         c1.remove();  // works ok
         assertEquals("[A, Z, C]", list.toString());
@@ -678,23 +703,24 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextPreviousAddByIterator() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
         assertEquals("B", c1.previous());
-        
-        c1.add("Z");
-        
+
+        c1.add((E) "Z");
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(2, c1.nextIndex);
         assertEquals(null, c1.current);
         assertEquals("B", c1.next.value);
-        
+
         assertEquals("[A, Z, B, C]", list.toString());
         try {
             c1.remove();
@@ -702,23 +728,24 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         } catch (IllegalStateException ex) {}
     }
 
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextAddByIterator() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
-        
-        c1.add("Z");
-        
+
+        c1.add((E) "Z");
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(3, c1.nextIndex);
         assertEquals(false, c1.currentRemovedByAnother);
         assertEquals(null, c1.current);
         assertEquals("C", c1.next.value);
-        
+
         assertEquals("[A, B, Z, C]", list.toString());
         try {
             c1.remove();
@@ -727,47 +754,49 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextRemoveByListSetByIterator() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
-        
+
         list.remove(1);
-        
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals(null, c1.current);
         assertEquals("C", c1.next.value);
         assertEquals("[A, C]", list.toString());
-        
+
         try {
-            c1.set("Z");
+            c1.set((E) "Z");
             fail();
         } catch (IllegalStateException ex) {}
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextPreviousSetByIterator() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
         assertEquals("B", c1.previous());
-        
-        c1.set("Z");
-        
+
+        c1.set((E) "Z");
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(1, c1.nextIndex);
         assertEquals("Z", c1.current.value);
         assertEquals("Z", c1.next.value);
-        
+
         assertEquals("[A, Z, C]", list.toString());
         c1.remove();  // works ok
         assertEquals("[A, C]", list.toString());
@@ -777,22 +806,23 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         } catch (IllegalStateException ex) {}
     }
 
+    @SuppressWarnings("unchecked")
     public void testInternalState_CursorNextNextSetByIterator() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
 
-        CursorableLinkedList.Cursor c1 = list.cursor();
+        CursorableLinkedList.Cursor<E> c1 = list.cursor();
         assertEquals("A", c1.next());
         assertEquals("B", c1.next());
-        
-        c1.set("Z");
-        
+
+        c1.set((E) "Z");
+
         assertEquals(true, c1.nextIndexValid);
         assertEquals(2, c1.nextIndex);
         assertEquals("Z", c1.current.value);
         assertEquals("C", c1.next.value);
-        
+
         assertEquals("[A, Z, C]", list.toString());
         c1.remove();  // works ok
         assertEquals("[A, C]", list.toString());
@@ -803,44 +833,45 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testEqualsAndHashCode() {
         assertTrue(list.equals(list));
         assertEquals(list.hashCode(),list.hashCode());
-        list.add("A");
+        list.add((E) "A");
         assertTrue(list.equals(list));
         assertEquals(list.hashCode(),list.hashCode());
 
-        CursorableLinkedList list2 = new CursorableLinkedList();
+        CursorableLinkedList<E> list2 = new CursorableLinkedList<E>();
         assertTrue(!list.equals(list2));
         assertTrue(!list2.equals(list));
 
-        java.util.List list3 = new java.util.LinkedList();
+        java.util.List<E> list3 = new java.util.LinkedList<E>();
         assertTrue(!list.equals(list3));
         assertTrue(!list3.equals(list));
         assertTrue(list2.equals(list3));
         assertTrue(list3.equals(list2));
         assertEquals(list2.hashCode(),list3.hashCode());
 
-        list2.add("A");
+        list2.add((E) "A");
         assertTrue(list.equals(list2));
         assertTrue(list2.equals(list));
         assertTrue(!list2.equals(list3));
         assertTrue(!list3.equals(list2));
 
-        list3.add("A");
+        list3.add((E) "A");
         assertTrue(list2.equals(list3));
         assertTrue(list3.equals(list2));
         assertEquals(list2.hashCode(),list3.hashCode());
 
-        list.add("B");
+        list.add((E) "B");
         assertTrue(list.equals(list));
         assertTrue(!list.equals(list2));
         assertTrue(!list2.equals(list));
         assertTrue(!list.equals(list3));
         assertTrue(!list3.equals(list));
 
-        list2.add("B");
-        list3.add("B");
+        list2.add((E) "B");
+        list3.add((E) "B");
         assertTrue(list.equals(list));
         assertTrue(list.equals(list2));
         assertTrue(list2.equals(list));
@@ -848,9 +879,9 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertTrue(list3.equals(list2));
         assertEquals(list2.hashCode(),list3.hashCode());
 
-        list.add("C");
-        list2.add("C");
-        list3.add("C");
+        list.add((E) "C");
+        list2.add((E) "C");
+        list3.add((E) "C");
         assertTrue(list.equals(list));
         assertTrue(list.equals(list2));
         assertTrue(list2.equals(list));
@@ -859,13 +890,14 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertEquals(list.hashCode(),list2.hashCode());
         assertEquals(list2.hashCode(),list3.hashCode());
 
-        list.add("D");
-        list2.addFirst("D");
+        list.add((E) "D");
+        list2.addFirst((E) "D");
         assertTrue(list.equals(list));
         assertTrue(!list.equals(list2));
         assertTrue(!list2.equals(list));
     }
 
+    @SuppressWarnings("unchecked")
     public void testGet() {
         try {
             list.get(0);
@@ -874,9 +906,9 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
             // expected
         }
 
-        assertTrue(list.add("A"));
+        assertTrue(list.add((E) "A"));
         assertEquals("A",list.get(0));
-        assertTrue(list.add("B"));
+        assertTrue(list.add((E) "B"));
         assertEquals("A",list.get(0));
         assertEquals("B",list.get(1));
 
@@ -895,195 +927,201 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         }
     }
 
+    @SuppressWarnings("unchecked")
     public void testIndexOf() {
         assertEquals(-1,list.indexOf("A"));
         assertEquals(-1,list.lastIndexOf("A"));
-        list.add("A");
+        list.add((E) "A");
         assertEquals(0,list.indexOf("A"));
         assertEquals(0,list.lastIndexOf("A"));
         assertEquals(-1,list.indexOf("B"));
         assertEquals(-1,list.lastIndexOf("B"));
-        list.add("B");
+        list.add((E) "B");
         assertEquals(0,list.indexOf("A"));
         assertEquals(0,list.lastIndexOf("A"));
         assertEquals(1,list.indexOf("B"));
         assertEquals(1,list.lastIndexOf("B"));
-        list.addFirst("B");
+        list.addFirst((E) "B");
         assertEquals(1,list.indexOf("A"));
         assertEquals(1,list.lastIndexOf("A"));
         assertEquals(0,list.indexOf("B"));
         assertEquals(2,list.lastIndexOf("B"));
     }
 
+    @SuppressWarnings("unchecked")
     public void testIsEmpty() {
         assertTrue(list.isEmpty());
-        list.add("element");
+        list.add((E) "element");
         assertTrue(!list.isEmpty());
         list.remove("element");
         assertTrue(list.isEmpty());
-        list.add("element");
+        list.add((E) "element");
         assertTrue(!list.isEmpty());
         list.clear();
         assertTrue(list.isEmpty());
     }
 
+    @SuppressWarnings("unchecked")
     public void testIterator() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-        Iterator it = list.iterator();
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+        Iterator<E> it = list.iterator();
         assertTrue(it.hasNext());
-        assertEquals("1",it.next());
+        assertEquals("1", it.next());
         assertTrue(it.hasNext());
-        assertEquals("2",it.next());
+        assertEquals("2", it.next());
         assertTrue(it.hasNext());
-        assertEquals("3",it.next());
+        assertEquals("3", it.next());
         assertTrue(it.hasNext());
-        assertEquals("4",it.next());
+        assertEquals("4", it.next());
         assertTrue(it.hasNext());
-        assertEquals("5",it.next());
+        assertEquals("5", it.next());
         assertTrue(!it.hasNext());
 
         it = list.iterator();
         assertTrue(it.hasNext());
-        assertEquals("1",it.next());
+        assertEquals("1", it.next());
         it.remove();
-        assertEquals("[2, 3, 4, 5]",list.toString());
+        assertEquals("[2, 3, 4, 5]", list.toString());
         assertTrue(it.hasNext());
-        assertEquals("2",it.next());
+        assertEquals("2", it.next());
         it.remove();
-        assertEquals("[3, 4, 5]",list.toString());
+        assertEquals("[3, 4, 5]", list.toString());
         assertTrue(it.hasNext());
-        assertEquals("3",it.next());
+        assertEquals("3", it.next());
         it.remove();
-        assertEquals("[4, 5]",list.toString());
+        assertEquals("[4, 5]", list.toString());
         assertTrue(it.hasNext());
-        assertEquals("4",it.next());
+        assertEquals("4", it.next());
         it.remove();
-        assertEquals("[5]",list.toString());
+        assertEquals("[5]", list.toString());
         assertTrue(it.hasNext());
-        assertEquals("5",it.next());
+        assertEquals("5", it.next());
         it.remove();
-        assertEquals("[]",list.toString());
+        assertEquals("[]", list.toString());
         assertTrue(!it.hasNext());
     }
 
+    @SuppressWarnings("unchecked")
     public void testListIteratorNavigation() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-        ListIterator it = list.listIterator();
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+        ListIterator<E> it = list.listIterator();
         assertTrue(it.hasNext());
         assertTrue(!it.hasPrevious());
-        assertEquals(-1,it.previousIndex());
-        assertEquals(0,it.nextIndex());
-        assertEquals("1",it.next());
+        assertEquals(-1, it.previousIndex());
+        assertEquals(0, it.nextIndex());
+        assertEquals("1", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(0,it.previousIndex());
-        assertEquals(1,it.nextIndex());
-        assertEquals("1",it.previous());
+        assertEquals(0, it.previousIndex());
+        assertEquals(1, it.nextIndex());
+        assertEquals("1", it.previous());
         assertTrue(it.hasNext());
         assertTrue(!it.hasPrevious());
-        assertEquals(-1,it.previousIndex());
-        assertEquals(0,it.nextIndex());
-        assertEquals("1",it.next());
+        assertEquals(-1, it.previousIndex());
+        assertEquals(0, it.nextIndex());
+        assertEquals("1", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(0,it.previousIndex());
-        assertEquals(1,it.nextIndex());
-        assertEquals("2",it.next());
+        assertEquals(0, it.previousIndex());
+        assertEquals(1, it.nextIndex());
+        assertEquals("2", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(1,it.previousIndex());
-        assertEquals(2,it.nextIndex());
-        assertEquals("2",it.previous());
+        assertEquals(1, it.previousIndex());
+        assertEquals(2, it.nextIndex());
+        assertEquals("2", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(0,it.previousIndex());
-        assertEquals(1,it.nextIndex());
-        assertEquals("2",it.next());
+        assertEquals(0, it.previousIndex());
+        assertEquals(1, it.nextIndex());
+        assertEquals("2", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(1,it.previousIndex());
-        assertEquals(2,it.nextIndex());
-        assertEquals("3",it.next());
+        assertEquals(1, it.previousIndex());
+        assertEquals(2, it.nextIndex());
+        assertEquals("3", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(2,it.previousIndex());
-        assertEquals(3,it.nextIndex());
-        assertEquals("4",it.next());
+        assertEquals(2, it.previousIndex());
+        assertEquals(3, it.nextIndex());
+        assertEquals("4", it.next());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(3,it.previousIndex());
-        assertEquals(4,it.nextIndex());
-        assertEquals("5",it.next());
+        assertEquals(3, it.previousIndex());
+        assertEquals(4, it.nextIndex());
+        assertEquals("5", it.next());
         assertTrue(!it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(4,it.previousIndex());
-        assertEquals(5,it.nextIndex());
-        assertEquals("5",it.previous());
+        assertEquals(4, it.previousIndex());
+        assertEquals(5, it.nextIndex());
+        assertEquals("5", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(3,it.previousIndex());
-        assertEquals(4,it.nextIndex());
-        assertEquals("4",it.previous());
+        assertEquals(3, it.previousIndex());
+        assertEquals(4, it.nextIndex());
+        assertEquals("4", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(2,it.previousIndex());
-        assertEquals(3,it.nextIndex());
-        assertEquals("3",it.previous());
+        assertEquals(2, it.previousIndex());
+        assertEquals(3, it.nextIndex());
+        assertEquals("3", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(1,it.previousIndex());
-        assertEquals(2,it.nextIndex());
-        assertEquals("2",it.previous());
+        assertEquals(1, it.previousIndex());
+        assertEquals(2, it.nextIndex());
+        assertEquals("2", it.previous());
         assertTrue(it.hasNext());
         assertTrue(it.hasPrevious());
-        assertEquals(0,it.previousIndex());
-        assertEquals(1,it.nextIndex());
-        assertEquals("1",it.previous());
+        assertEquals(0, it.previousIndex());
+        assertEquals(1, it.nextIndex());
+        assertEquals("1", it.previous());
         assertTrue(it.hasNext());
         assertTrue(!it.hasPrevious());
-        assertEquals(-1,it.previousIndex());
-        assertEquals(0,it.nextIndex());
+        assertEquals(-1, it.previousIndex());
+        assertEquals(0, it.nextIndex());
     }
 
+    @SuppressWarnings("unchecked")
     public void testListIteratorSet() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-
-        ListIterator it = list.listIterator();
-        assertEquals("1",it.next());
-        it.set("a");
-        assertEquals("a",it.previous());
-        it.set("A");
-        assertEquals("A",it.next());
-        assertEquals("2",it.next());
-        it.set("B");
-        assertEquals("3",it.next());
-        assertEquals("4",it.next());
-        it.set("D");
-        assertEquals("5",it.next());
-        it.set("E");
-        assertEquals("[A, B, 3, D, E]",list.toString());
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+
+        ListIterator<E> it = list.listIterator();
+        assertEquals("1", it.next());
+        it.set((E) "a");
+        assertEquals("a", it.previous());
+        it.set((E) "A");
+        assertEquals("A", it.next());
+        assertEquals("2", it.next());
+        it.set((E) "B");
+        assertEquals("3", it.next());
+        assertEquals("4", it.next());
+        it.set((E) "D");
+        assertEquals("5", it.next());
+        it.set((E) "E");
+        assertEquals("[A, B, 3, D, E]", list.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testListIteratorRemove() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
 
-        ListIterator it = list.listIterator();
+        ListIterator<E> it = list.listIterator();
         try {
             it.remove();
         } catch(IllegalStateException e) {
@@ -1117,274 +1155,287 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertEquals("[]",list.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testListIteratorAdd() {
-        ListIterator it = list.listIterator();
-        it.add("1");
-        assertEquals("[1]",list.toString());
-        it.add("3");
-        assertEquals("[1, 3]",list.toString());
-        it.add("5");
-        assertEquals("[1, 3, 5]",list.toString());
-        assertEquals("5",it.previous());
-        it.add("4");
-        assertEquals("[1, 3, 4, 5]",list.toString());
-        assertEquals("4",it.previous());
-        assertEquals("3",it.previous());
-        it.add("2");
-        assertEquals("[1, 2, 3, 4, 5]",list.toString());
+        ListIterator<E> it = list.listIterator();
+        it.add((E) "1");
+        assertEquals("[1]", list.toString());
+        it.add((E) "3");
+        assertEquals("[1, 3]", list.toString());
+        it.add((E) "5");
+        assertEquals("[1, 3, 5]", list.toString());
+        assertEquals("5", it.previous());
+        it.add((E) "4");
+        assertEquals("[1, 3, 4, 5]", list.toString());
+        assertEquals("4", it.previous());
+        assertEquals("3", it.previous());
+        it.add((E) "2");
+        assertEquals("[1, 2, 3, 4, 5]", list.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testRemoveAll() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-
-        HashSet set = new HashSet();
-        set.add("A");
-        set.add("2");
-        set.add("C");
-        set.add("4");
-        set.add("D");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+
+        HashSet<E> set = new HashSet<E>();
+        set.add((E) "A");
+        set.add((E) "2");
+        set.add((E) "C");
+        set.add((E) "4");
+        set.add((E) "D");
 
         assertTrue(list.removeAll(set));
-        assertEquals("[1, 3, 5]",list.toString());
+        assertEquals("[1, 3, 5]", list.toString());
         assertTrue(!list.removeAll(set));
     }
 
+    @SuppressWarnings("unchecked")
     public void testRemoveByIndex() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-        assertEquals("[1, 2, 3, 4, 5]",list.toString());
-        assertEquals("1",list.remove(0));
-        assertEquals("[2, 3, 4, 5]",list.toString());
-        assertEquals("3",list.remove(1));
-        assertEquals("[2, 4, 5]",list.toString());
-        assertEquals("4",list.remove(1));
-        assertEquals("[2, 5]",list.toString());
-        assertEquals("5",list.remove(1));
-        assertEquals("[2]",list.toString());
-        assertEquals("2",list.remove(0));
-        assertEquals("[]",list.toString());
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+        assertEquals("[1, 2, 3, 4, 5]", list.toString());
+        assertEquals("1", list.remove(0));
+        assertEquals("[2, 3, 4, 5]", list.toString());
+        assertEquals("3", list.remove(1));
+        assertEquals("[2, 4, 5]", list.toString());
+        assertEquals("4", list.remove(1));
+        assertEquals("[2, 5]", list.toString());
+        assertEquals("5", list.remove(1));
+        assertEquals("[2]", list.toString());
+        assertEquals("2", list.remove(0));
+        assertEquals("[]", list.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testRemove() {
-        list.add("1");
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-        assertEquals("[1, 1, 2, 3, 4, 5, 2, 3, 4, 5]",list.toString());
+        list.add((E) "1");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+        assertEquals("[1, 1, 2, 3, 4, 5, 2, 3, 4, 5]", list.toString());
         assertTrue(!list.remove("6"));
         assertTrue(list.remove("5"));
-        assertEquals("[1, 1, 2, 3, 4, 2, 3, 4, 5]",list.toString());
+        assertEquals("[1, 1, 2, 3, 4, 2, 3, 4, 5]", list.toString());
         assertTrue(list.remove("5"));
-        assertEquals("[1, 1, 2, 3, 4, 2, 3, 4]",list.toString());
+        assertEquals("[1, 1, 2, 3, 4, 2, 3, 4]", list.toString());
         assertTrue(!list.remove("5"));
         assertTrue(list.remove("1"));
-        assertEquals("[1, 2, 3, 4, 2, 3, 4]",list.toString());
+        assertEquals("[1, 2, 3, 4, 2, 3, 4]", list.toString());
         assertTrue(list.remove("1"));
-        assertEquals("[2, 3, 4, 2, 3, 4]",list.toString());
+        assertEquals("[2, 3, 4, 2, 3, 4]", list.toString());
         assertTrue(list.remove("2"));
-        assertEquals("[3, 4, 2, 3, 4]",list.toString());
+        assertEquals("[3, 4, 2, 3, 4]", list.toString());
         assertTrue(list.remove("2"));
-        assertEquals("[3, 4, 3, 4]",list.toString());
+        assertEquals("[3, 4, 3, 4]", list.toString());
         assertTrue(list.remove("3"));
-        assertEquals("[4, 3, 4]",list.toString());
+        assertEquals("[4, 3, 4]", list.toString());
         assertTrue(list.remove("3"));
-        assertEquals("[4, 4]",list.toString());
+        assertEquals("[4, 4]", list.toString());
         assertTrue(list.remove("4"));
-        assertEquals("[4]",list.toString());
+        assertEquals("[4]", list.toString());
         assertTrue(list.remove("4"));
-        assertEquals("[]",list.toString());
+        assertEquals("[]", list.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testRetainAll() {
-        list.add("1");
-        list.add("1");
-        list.add("2");
-        list.add("2");
-        list.add("3");
-        list.add("3");
-        list.add("4");
-        list.add("4");
-        list.add("5");
-        list.add("5");
-
-        HashSet set = new HashSet();
-        set.add("A");
-        set.add("2");
-        set.add("C");
-        set.add("4");
-        set.add("D");
+        list.add((E) "1");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "4");
+        list.add((E) "5");
+        list.add((E) "5");
+
+        HashSet<E> set = new HashSet<E>();
+        set.add((E) "A");
+        set.add((E) "2");
+        set.add((E) "C");
+        set.add((E) "4");
+        set.add((E) "D");
 
         assertTrue(list.retainAll(set));
-        assertEquals("[2, 2, 4, 4]",list.toString());
+        assertEquals("[2, 2, 4, 4]", list.toString());
         assertTrue(!list.retainAll(set));
     }
 
+    @SuppressWarnings("unchecked")
     public void testSet() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
-        assertEquals("[1, 2, 3, 4, 5]",list.toString());
-        list.set(0,"A");
-        assertEquals("[A, 2, 3, 4, 5]",list.toString());
-        list.set(1,"B");
-        assertEquals("[A, B, 3, 4, 5]",list.toString());
-        list.set(2,"C");
-        assertEquals("[A, B, C, 4, 5]",list.toString());
-        list.set(3,"D");
-        assertEquals("[A, B, C, D, 5]",list.toString());
-        list.set(4,"E");
-        assertEquals("[A, B, C, D, E]",list.toString());
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
+        assertEquals("[1, 2, 3, 4, 5]", list.toString());
+        list.set(0, (E) "A");
+        assertEquals("[A, 2, 3, 4, 5]", list.toString());
+        list.set(1, (E) "B");
+        assertEquals("[A, B, 3, 4, 5]", list.toString());
+        list.set(2, (E) "C");
+        assertEquals("[A, B, C, 4, 5]", list.toString());
+        list.set(3, (E) "D");
+        assertEquals("[A, B, C, D, 5]", list.toString());
+        list.set(4, (E) "E");
+        assertEquals("[A, B, C, D, E]", list.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testSubList() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
-        list.add("D");
-        list.add("E");
-
-        assertEquals("[A, B, C, D, E]",list.toString());
-        assertEquals("[A, B, C, D, E]",list.subList(0,5).toString());
-        assertEquals("[B, C, D, E]",list.subList(1,5).toString());
-        assertEquals("[C, D, E]",list.subList(2,5).toString());
-        assertEquals("[D, E]",list.subList(3,5).toString());
-        assertEquals("[E]",list.subList(4,5).toString());
-        assertEquals("[]",list.subList(5,5).toString());
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
+        list.add((E) "D");
+        list.add((E) "E");
+
+        assertEquals("[A, B, C, D, E]", list.toString());
+        assertEquals("[A, B, C, D, E]", list.subList(0, 5).toString());
+        assertEquals("[B, C, D, E]", list.subList(1, 5).toString());
+        assertEquals("[C, D, E]", list.subList(2, 5).toString());
+        assertEquals("[D, E]", list.subList(3, 5).toString());
+        assertEquals("[E]", list.subList(4, 5).toString());
+        assertEquals("[]", list.subList(5, 5).toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testSubListAddEnd() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
-        list.add("D");
-        list.add("E");
-
-        List sublist = list.subList(5,5);
-        sublist.add("F");
-        assertEquals("[A, B, C, D, E, F]",list.toString());
-        assertEquals("[F]",sublist.toString());
-        sublist.add("G");
-        assertEquals("[A, B, C, D, E, F, G]",list.toString());
-        assertEquals("[F, G]",sublist.toString());
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
+        list.add((E) "D");
+        list.add((E) "E");
+
+        List<E> sublist = list.subList(5, 5);
+        sublist.add((E) "F");
+        assertEquals("[A, B, C, D, E, F]", list.toString());
+        assertEquals("[F]", sublist.toString());
+        sublist.add((E) "G");
+        assertEquals("[A, B, C, D, E, F, G]", list.toString());
+        assertEquals("[F, G]", sublist.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testSubListAddBegin() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
-        list.add("D");
-        list.add("E");
-
-        List sublist = list.subList(0,0);
-        sublist.add("a");
-        assertEquals("[a, A, B, C, D, E]",list.toString());
-        assertEquals("[a]",sublist.toString());
-        sublist.add("b");
-        assertEquals("[a, b, A, B, C, D, E]",list.toString());
-        assertEquals("[a, b]",sublist.toString());
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
+        list.add((E) "D");
+        list.add((E) "E");
+
+        List<E> sublist = list.subList(0, 0);
+        sublist.add((E) "a");
+        assertEquals("[a, A, B, C, D, E]", list.toString());
+        assertEquals("[a]", sublist.toString());
+        sublist.add((E) "b");
+        assertEquals("[a, b, A, B, C, D, E]", list.toString());
+        assertEquals("[a, b]", sublist.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testSubListAddMiddle() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
-        list.add("D");
-        list.add("E");
-
-        List sublist = list.subList(1,3);
-        sublist.add("a");
-        assertEquals("[A, B, C, a, D, E]",list.toString());
-        assertEquals("[B, C, a]",sublist.toString());
-        sublist.add("b");
-        assertEquals("[A, B, C, a, b, D, E]",list.toString());
-        assertEquals("[B, C, a, b]",sublist.toString());
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
+        list.add((E) "D");
+        list.add((E) "E");
+
+        List<E> sublist = list.subList(1, 3);
+        sublist.add((E) "a");
+        assertEquals("[A, B, C, a, D, E]", list.toString());
+        assertEquals("[B, C, a]", sublist.toString());
+        sublist.add((E) "b");
+        assertEquals("[A, B, C, a, b, D, E]", list.toString());
+        assertEquals("[B, C, a, b]", sublist.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testSubListRemove() {
-        list.add("A");
-        list.add("B");
-        list.add("C");
-        list.add("D");
-        list.add("E");
-
-        List sublist = list.subList(1,4);
-        assertEquals("[B, C, D]",sublist.toString());
-        assertEquals("[A, B, C, D, E]",list.toString());
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
+        list.add((E) "D");
+        list.add((E) "E");
+
+        List<E> sublist = list.subList(1, 4);
+        assertEquals("[B, C, D]", sublist.toString());
+        assertEquals("[A, B, C, D, E]", list.toString());
         sublist.remove("C");
-        assertEquals("[B, D]",sublist.toString());
-        assertEquals("[A, B, D, E]",list.toString());
+        assertEquals("[B, D]", sublist.toString());
+        assertEquals("[A, B, D, E]", list.toString());
         sublist.remove(1);
-        assertEquals("[B]",sublist.toString());
-        assertEquals("[A, B, E]",list.toString());
+        assertEquals("[B]", sublist.toString());
+        assertEquals("[A, B, E]", list.toString());
         sublist.clear();
-        assertEquals("[]",sublist.toString());
-        assertEquals("[A, E]",list.toString());
+        assertEquals("[]", sublist.toString());
+        assertEquals("[A, E]", list.toString());
     }
 
+    @SuppressWarnings("unchecked")
     public void testToArray() {
-        list.add("1");
-        list.add("2");
-        list.add("3");
-        list.add("4");
-        list.add("5");
+        list.add((E) "1");
+        list.add((E) "2");
+        list.add((E) "3");
+        list.add((E) "4");
+        list.add((E) "5");
 
         Object[] elts = list.toArray();
-        assertEquals("1",elts[0]);
-        assertEquals("2",elts[1]);
-        assertEquals("3",elts[2]);
-        assertEquals("4",elts[3]);
-        assertEquals("5",elts[4]);
-        assertEquals(5,elts.length);
-
-        String[] elts2 = (String[])(list.toArray(new String[0]));
-        assertEquals("1",elts2[0]);
-        assertEquals("2",elts2[1]);
-        assertEquals("3",elts2[2]);
-        assertEquals("4",elts2[3]);
-        assertEquals("5",elts2[4]);
-        assertEquals(5,elts2.length);
+        assertEquals("1", elts[0]);
+        assertEquals("2", elts[1]);
+        assertEquals("3", elts[2]);
+        assertEquals("4", elts[3]);
+        assertEquals("5", elts[4]);
+        assertEquals(5, elts.length);
+
+        String[] elts2 = (String[]) (list.toArray(new String[0]));
+        assertEquals("1", elts2[0]);
+        assertEquals("2", elts2[1]);
+        assertEquals("3", elts2[2]);
+        assertEquals("4", elts2[3]);
+        assertEquals("5", elts2[4]);
+        assertEquals(5, elts2.length);
 
         String[] elts3 = new String[5];
-        assertSame(elts3,list.toArray(elts3));
-        assertEquals("1",elts3[0]);
-        assertEquals("2",elts3[1]);
-        assertEquals("3",elts3[2]);
-        assertEquals("4",elts3[3]);
-        assertEquals("5",elts3[4]);
-        assertEquals(5,elts3.length);
+        assertSame(elts3, list.toArray(elts3));
+        assertEquals("1", elts3[0]);
+        assertEquals("2", elts3[1]);
+        assertEquals("3", elts3[2]);
+        assertEquals("4", elts3[3]);
+        assertEquals("5", elts3[4]);
+        assertEquals(5, elts3.length);
 
         String[] elts4 = new String[3];
-        String[] elts4b = (String[])(list.toArray(elts4));
+        String[] elts4b = (String[]) (list.toArray(elts4));
         assertTrue(elts4 != elts4b);
-        assertEquals("1",elts4b[0]);
-        assertEquals("2",elts4b[1]);
-        assertEquals("3",elts4b[2]);
-        assertEquals("4",elts4b[3]);
-        assertEquals("5",elts4b[4]);
-        assertEquals(5,elts4b.length);
+        assertEquals("1", elts4b[0]);
+        assertEquals("2", elts4b[1]);
+        assertEquals("3", elts4b[2]);
+        assertEquals("4", elts4b[3]);
+        assertEquals("5", elts4b[4]);
+        assertEquals(5, elts4b.length);
     }
 
+    @SuppressWarnings("unchecked")
     public void testSerialization() throws Exception {
-        list.add("A");
-        list.add("B");
-        list.add("C");
-        list.add("D");
-        list.add("E");
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
+        list.add((E) "D");
+        list.add((E) "E");
 
         java.io.ByteArrayOutputStream buf = new java.io.ByteArrayOutputStream();
         java.io.ObjectOutputStream out = new java.io.ObjectOutputStream(buf);
@@ -1401,14 +1452,13 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertTrue(list.equals(list2));
     }
 
+    @SuppressWarnings("unchecked")
     public void testSerializationWithOpenCursor() throws Exception {
-        list.add("A");
-        list.add("B");
-        list.add("C");
-        list.add("D");
-        list.add("E");
-        CursorableLinkedList.Cursor cursor = list.cursor();
-
+        list.add((E) "A");
+        list.add((E) "B");
+        list.add((E) "C");
+        list.add((E) "D");
+        list.add((E) "E");
         java.io.ByteArrayOutputStream buf = new java.io.ByteArrayOutputStream();
         java.io.ObjectOutputStream out = new java.io.ObjectOutputStream(buf);
         out.writeObject(list);
@@ -1424,11 +1474,12 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertTrue(list.equals(list2));
     }
 
+    @SuppressWarnings("unchecked")
     public void testLongSerialization() throws Exception {
         // recursive serialization will cause a stack
         // overflow exception with long lists
-        for(int i=0;i<10000;i++) {
-            list.add(new Integer(i));
+        for (int i = 0; i < 10000; i++) {
+            list.add((E) new Integer(i));
         }
 
         java.io.ByteArrayOutputStream buf = new java.io.ByteArrayOutputStream();
@@ -1446,31 +1497,30 @@ public class TestCursorableLinkedList extends TestAbstractLinkedList {
         assertTrue(list.equals(list2));
     }
 
-
     /**
      *  Ignore the serialization tests for sublists and sub-sublists.
      *
-     *  @return an array of sublist serialization test names 
+     *  @return an array of sublist serialization test names
      */
     public String[] ignoredTests() {
-        ArrayList list = new ArrayList();
+        ArrayList<String> list = new ArrayList<String>();
         String prefix = "TestCursorableLinkedList";
         String bulk = ".bulkTestSubList";
         String[] ignored = new String[] {
-          ".testEmptyListSerialization",
-          ".testFullListSerialization", 
-          ".testEmptyListCompatibility", 
-          ".testFullListCompatibility", 
-          ".testSimpleSerialization",
-          ".testCanonicalEmptyCollectionExists",
-          ".testCanonicalFullCollectionExists",
-          ".testSerializeDeserializeThenCompare"
+                ".testEmptyListSerialization",
+                ".testFullListSerialization",
+                ".testEmptyListCompatibility",
+                ".testFullListCompatibility",
+                ".testSimpleSerialization",
+                ".testCanonicalEmptyCollectionExists",
+                ".testCanonicalFullCollectionExists",
+                ".testSerializeDeserializeThenCompare"
         };
         for (int i = 0; i < ignored.length; i++) {
             list.add(prefix + bulk + ignored[i]);
             list.add(prefix + bulk + bulk + ignored[i]);
         }
-        return (String[])list.toArray(new String[0]);
+        return (String[]) list.toArray(new String[0]);
     }
 
     public String getCompatibilityVersion() {

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/list/TestFixedSizeList.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/list/TestFixedSizeList.java b/src/test/org/apache/commons/collections/list/TestFixedSizeList.java
index 811a829..7e15952 100644
--- a/src/test/org/apache/commons/collections/list/TestFixedSizeList.java
+++ b/src/test/org/apache/commons/collections/list/TestFixedSizeList.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -29,10 +29,10 @@ import junit.framework.TestSuite;
  *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Stephen Colebourne
  */
-public class TestFixedSizeList extends AbstractTestList {
+public class TestFixedSizeList<E> extends AbstractTestList<E> {
 
     public TestFixedSizeList(String testName) {
         super(testName);
@@ -47,16 +47,16 @@ public class TestFixedSizeList extends AbstractTestList {
         junit.textui.TestRunner.main(testCaseName);
     }
 
-    public List makeEmptyList() {
-        return FixedSizeList.decorate(new ArrayList());
+    public List<E> makeObject() {
+        return FixedSizeList.decorate(new ArrayList<E>());
     }
 
-    public List makeFullList() {
-        List list = new ArrayList();
+    public List<E> makeFullCollection() {
+        List<E> list = new ArrayList<E>();
         list.addAll(Arrays.asList(getFullElements()));
         return FixedSizeList.decorate(list);
     }
-    
+
     public boolean isAddSupported() {
         return false;
     }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/list/TestGrowthList.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/list/TestGrowthList.java b/src/test/org/apache/commons/collections/list/TestGrowthList.java
index 22af210..1b6e1a7 100644
--- a/src/test/org/apache/commons/collections/list/TestGrowthList.java
+++ b/src/test/org/apache/commons/collections/list/TestGrowthList.java
@@ -32,7 +32,7 @@ import junit.framework.TestSuite;
  * 
  * @author Stephen Colebourne
  */
-public class TestGrowthList extends AbstractTestList {
+public class TestGrowthList<E> extends AbstractTestList<E> {
 
     public TestGrowthList(String testName) {
         super(testName);
@@ -47,12 +47,12 @@ public class TestGrowthList extends AbstractTestList {
         junit.textui.TestRunner.main(testCaseName);
     }
 
-    public List makeEmptyList() {
-        return new GrowthList();
+    public List<E> makeObject() {
+        return new GrowthList<E>();
     }
 
-    public List makeFullList() {
-        List list = new ArrayList();
+    public List<E> makeFullCollection() {
+        List<E> list = new ArrayList<E>();
         list.addAll(Arrays.asList(getFullElements()));
         return GrowthList.decorate(list);
     }
@@ -60,7 +60,7 @@ public class TestGrowthList extends AbstractTestList {
     //-----------------------------------------------------------------------
     public void testGrowthAdd() {
         Integer one = new Integer(1);
-        GrowthList grower = new GrowthList();
+        GrowthList<Integer> grower = new GrowthList<Integer>();
         assertEquals(0, grower.size());
         grower.add(1, one);
         assertEquals(2, grower.size());
@@ -71,10 +71,10 @@ public class TestGrowthList extends AbstractTestList {
     public void testGrowthAddAll() {
         Integer one = new Integer(1);
         Integer two = new Integer(2);
-        Collection coll = new ArrayList();
+        Collection<Integer> coll = new ArrayList<Integer>();
         coll.add(one);
         coll.add(two);
-        GrowthList grower = new GrowthList();
+        GrowthList<Integer> grower = new GrowthList<Integer>();
         assertEquals(0, grower.size());
         grower.addAll(1, coll);
         assertEquals(3, grower.size());
@@ -85,7 +85,7 @@ public class TestGrowthList extends AbstractTestList {
 
     public void testGrowthSet1() {
         Integer one = new Integer(1);
-        GrowthList grower = new GrowthList();
+        GrowthList<Integer> grower = new GrowthList<Integer>();
         assertEquals(0, grower.size());
         grower.set(1, one);
         assertEquals(2, grower.size());
@@ -95,7 +95,7 @@ public class TestGrowthList extends AbstractTestList {
 
     public void testGrowthSet2() {
         Integer one = new Integer(1);
-        GrowthList grower = new GrowthList();
+        GrowthList<Integer> grower = new GrowthList<Integer>();
         assertEquals(0, grower.size());
         grower.set(0, one);
         assertEquals(1, grower.size());
@@ -107,10 +107,10 @@ public class TestGrowthList extends AbstractTestList {
      * Override.
      */
     public void testListAddByIndexBoundsChecking() {
-        List list;
-        Object element = getOtherElements()[0];
+        List<E> list;
+        E element = getOtherElements()[0];
         try {
-            list = makeEmptyList();
+            list = makeObject();
             list.add(-1, element);
             fail("List.add should throw IndexOutOfBoundsException [-1]");
         } catch (IndexOutOfBoundsException e) {
@@ -122,10 +122,10 @@ public class TestGrowthList extends AbstractTestList {
      * Override.
      */
     public void testListAddByIndexBoundsChecking2() {
-        List list;
-        Object element = getOtherElements()[0];
+        List<E> list;
+        E element = getOtherElements()[0];
         try {
-            list = makeFullList();
+            list = makeFullCollection();
             list.add(-1, element);
             fail("List.add should throw IndexOutOfBoundsException [-1]");
         } catch (IndexOutOfBoundsException e) {
@@ -137,8 +137,8 @@ public class TestGrowthList extends AbstractTestList {
      * Override.
      */
     public void testListSetByIndexBoundsChecking() {
-        List list = makeEmptyList();
-        Object element = getOtherElements()[0];
+        List<E> list = makeObject();
+        E element = getOtherElements()[0];
         try {
             list.set(-1, element);
             fail("List.set should throw IndexOutOfBoundsException [-1]");
@@ -151,8 +151,8 @@ public class TestGrowthList extends AbstractTestList {
      * Override.
      */
     public void testListSetByIndexBoundsChecking2() {
-        List list = makeFullList();
-        Object element = getOtherElements()[0];
+        List<E> list = makeFullCollection();
+        E element = getOtherElements()[0];
         try {
             list.set(-1, element);
             fail("List.set should throw IndexOutOfBoundsException [-1]");

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/list/TestNodeCachingLinkedList.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/list/TestNodeCachingLinkedList.java b/src/test/org/apache/commons/collections/list/TestNodeCachingLinkedList.java
index 689560a..a464896 100644
--- a/src/test/org/apache/commons/collections/list/TestNodeCachingLinkedList.java
+++ b/src/test/org/apache/commons/collections/list/TestNodeCachingLinkedList.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -18,7 +18,6 @@ package org.apache.commons.collections.list;
 
 import java.util.Arrays;
 import java.util.LinkedList;
-import java.util.List;
 
 import junit.framework.Test;
 
@@ -26,13 +25,13 @@ import org.apache.commons.collections.BulkTest;
 
 /**
  * Test class for NodeCachingLinkedList, a performance optimised LinkedList.
- * 
+ *
  * @version $Revision$ $Date$
- * 
+ *
  * @author Jeff Varszegi
  * @author Phil Steitz
  */
-public class TestNodeCachingLinkedList extends TestAbstractLinkedList {
+public class TestNodeCachingLinkedList<E> extends TestAbstractLinkedList<E> {
 
     public TestNodeCachingLinkedList(String testName) {
         super(testName);
@@ -48,49 +47,50 @@ public class TestNodeCachingLinkedList extends TestAbstractLinkedList {
         return BulkTest.makeSuite(TestNodeCachingLinkedList.class);
     }
 
-    //-----------------------------------------------------------------------    
-    public List makeEmptyList() {
-        return new NodeCachingLinkedList();
+    //-----------------------------------------------------------------------
+    public NodeCachingLinkedList<E> makeObject() {
+        return new NodeCachingLinkedList<E>();
     }
 
     public String getCompatibilityVersion() {
         return "3";
     }
-    
+
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testShrinkCache() {
         if (isRemoveSupported() == false || isAddSupported() == false) return;
         resetEmpty();
-        NodeCachingLinkedList list = (NodeCachingLinkedList) collection;
-        
-        list.addAll( Arrays.asList( new String[]{"1", "2", "3", "4"}));
-        list.removeAllNodes();        // Will dump all 4 elements into cache
-        ((NodeCachingLinkedList) list).setMaximumCacheSize(2); // shrink cache
-        list.addAll( Arrays.asList( new String[]{"1", "2", "3", "4"}));
+        NodeCachingLinkedList<E> list = getCollection();
+
+        list.addAll(Arrays.asList((E[]) new String[] { "1", "2", "3", "4" }));
+        list.removeAllNodes(); // Will dump all 4 elements into cache
+        list.setMaximumCacheSize(2); // shrink cache
+        list.addAll(Arrays.asList((E[]) new String[] { "1", "2", "3", "4" }));
         checkNodes();
         list.removeNode(list.getNode(0, false)); // no room in cache
-        list.removeNode(list.getNode(0, false)); 
-        list.removeNode(list.getNode(0, false)); 
-        checkNodes();    
-        list.addAll( Arrays.asList( new String[]{"1", "2", "3", "4"}));
-        checkNodes();     
-    }       
-    
+        list.removeNode(list.getNode(0, false));
+        list.removeNode(list.getNode(0, false));
+        checkNodes();
+        list.addAll(Arrays.asList((E[]) new String[] { "1", "2", "3", "4" }));
+        checkNodes();
+    }
+
     //-----------------------------------------------------------------------
     public static void compareSpeed() {
-        NodeCachingLinkedList ncll = new NodeCachingLinkedList();
-        LinkedList ll = new LinkedList();
-        
+        NodeCachingLinkedList<Object> ncll = new NodeCachingLinkedList<Object>();
+        LinkedList<Object> ll = new LinkedList<Object>();
+
         Object o1 = new Object();
         Object o2 = new Object();
-        
+
         int loopCount = 4000000;
-        
+
         long startTime, endTime;
-        
+
         System.out.println("Testing relative execution time of commonly-used methods...");
-        
-        startTime = System.currentTimeMillis();   
+
+        startTime = System.currentTimeMillis();
         for(int x = loopCount; x > 0; x--) {
             // unrolled a few times to minimize effect of loop
             ll.addFirst(o1);
@@ -114,10 +114,10 @@ public class TestNodeCachingLinkedList extends TestAbstractLinkedList {
             ll.add(o1);
             ll.remove(0);
         }
-        endTime = System.currentTimeMillis();   
+        endTime = System.currentTimeMillis();
         System.out.println("Time with LinkedList: " + (endTime - startTime) + " ms");
 
-        startTime = System.currentTimeMillis();   
+        startTime = System.currentTimeMillis();
         for(int x = loopCount; x > 0; x--) {
             ncll.addFirst(o1);
             ncll.addLast(o2);
@@ -140,11 +140,11 @@ public class TestNodeCachingLinkedList extends TestAbstractLinkedList {
             ncll.add(o1);
             ncll.remove(0);
         }
-        endTime = System.currentTimeMillis();   
+        endTime = System.currentTimeMillis();
         System.out.println("Time with NodeCachingLinkedList: " + (endTime - startTime) + " ms");
 
     }
-    
+
 //    public void testCreate() throws Exception {
 //        resetEmpty();
 //        writeExternalFormToDisk((java.io.Serializable) collection,
@@ -153,4 +153,12 @@ public class TestNodeCachingLinkedList extends TestAbstractLinkedList {
 //        writeExternalFormToDisk((java.io.Serializable) collection,
 //            "D:/dev/collections/data/test/NodeCachingLinkedList.fullCollection.version3.obj");
 //    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public NodeCachingLinkedList<E> getCollection() {
+        return (NodeCachingLinkedList<E>) super.getCollection();
+    }
 }