http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/collection/TestSynchronizedCollection.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/collection/TestSynchronizedCollection.java
 
b/src/test/org/apache/commons/collections/collection/TestSynchronizedCollection.java
index 1dbdb00..3782e12 100644
--- 
a/src/test/org/apache/commons/collections/collection/TestSynchronizedCollection.java
+++ 
b/src/test/org/apache/commons/collections/collection/TestSynchronizedCollection.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.
@@ -24,42 +24,41 @@ import junit.framework.Test;
 import junit.framework.TestSuite;
 
 /**
- * Extension of {@link AbstractTestCollection} for exercising the 
+ * Extension of {@link AbstractTestCollection} for exercising the
  * {@link SynchronizedCollection} implementation.
  *
  * @since Commons Collections 3.1
  * @version $Revision$ $Date$
- * 
+ *
  * @author Phil Steitz
  * @author Stephen Colebourne
  */
-public class TestSynchronizedCollection extends AbstractTestCollection<Object> 
{
-    
+public class TestSynchronizedCollection<E> extends AbstractTestCollection<E> {
+
     public TestSynchronizedCollection(String testName) {
         super(testName);
     }
-    
+
     public static Test suite() {
         return new TestSuite(TestSynchronizedCollection.class);
     }
-    
+
     public static void main(String args[]) {
         String[] testCaseName = { TestSynchronizedCollection.class.getName()};
         junit.textui.TestRunner.main(testCaseName);
     }
 
-    //-----------------------------------------------------------------------  
  
-    public Collection<Object> makeCollection() {
-        return SynchronizedCollection.decorate(new ArrayList<Object>());
+    //-----------------------------------------------------------------------
+    public Collection<E> makeObject() {
+        return SynchronizedCollection.decorate(new ArrayList<E>());
     }
-    
-    public Collection<Object> makeConfirmedCollection() {
-        ArrayList<Object> list = new ArrayList<Object>();
-        return list;
+
+    public Collection<E> makeConfirmedCollection() {
+        return new ArrayList<E>();
     }
 
-    public Collection<Object> makeConfirmedFullCollection() {
-        ArrayList<Object> list = new ArrayList<Object>();
+    public Collection<E> makeConfirmedFullCollection() {
+        ArrayList<E> list = new ArrayList<E>();
         list.addAll(Arrays.asList(getFullElements()));
         return list;
     }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/collection/TestTransformedCollection.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/collection/TestTransformedCollection.java
 
b/src/test/org/apache/commons/collections/collection/TestTransformedCollection.java
index 3764389..6706624 100644
--- 
a/src/test/org/apache/commons/collections/collection/TestTransformedCollection.java
+++ 
b/src/test/org/apache/commons/collections/collection/TestTransformedCollection.java
@@ -71,7 +71,7 @@ public class TestTransformedCollection extends 
AbstractTestCollection<Object> {
         return list;
     }
     
-    public Collection<Object> makeCollection() {
+    public Collection<Object> makeObject() {
         return TransformedCollection.decorate(new ArrayList<Object>(), 
NOOP_TRANSFORMER);
     }
 

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/collection/TestUnmodifiableCollection.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/collection/TestUnmodifiableCollection.java
 
b/src/test/org/apache/commons/collections/collection/TestUnmodifiableCollection.java
index 2a422da..e7e19f6 100644
--- 
a/src/test/org/apache/commons/collections/collection/TestUnmodifiableCollection.java
+++ 
b/src/test/org/apache/commons/collections/collection/TestUnmodifiableCollection.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.
@@ -25,48 +25,47 @@ import junit.framework.Test;
 import junit.framework.TestSuite;
 
 /**
- * Extension of {@link AbstractTestCollection} for exercising the 
+ * Extension of {@link AbstractTestCollection} for exercising the
  * {@link UnmodifiableCollection} implementation.
  *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Phil Steitz
  * @author Stephen Colebourne
  */
-public class TestUnmodifiableCollection extends AbstractTestCollection<Object> 
{
-    
+public class TestUnmodifiableCollection<E> extends AbstractTestCollection<E> {
+
     public TestUnmodifiableCollection(String testName) {
         super(testName);
     }
-    
+
     public static Test suite() {
         return new TestSuite(TestUnmodifiableCollection.class);
     }
-    
+
     public static void main(String args[]) {
         String[] testCaseName = { TestUnmodifiableCollection.class.getName()};
         junit.textui.TestRunner.main(testCaseName);
     }
 
-    //-----------------------------------------------------------------------  
  
-    public Collection<Object> makeCollection() {
-        return UnmodifiableCollection.decorate(new ArrayList<Object>());
+    //-----------------------------------------------------------------------
+    public Collection<E> makeObject() {
+        return UnmodifiableCollection.decorate(new ArrayList<E>());
     }
-    
-    public Collection<Object> makeFullCollection() {
-        List<Object> list = new ArrayList<Object>();
+
+    public Collection<E> makeFullCollection() {
+        List<E> list = new ArrayList<E>();
         list.addAll(Arrays.asList(getFullElements()));
         return UnmodifiableCollection.decorate(list);
     }
-    
-    public Collection<Object> makeConfirmedCollection() {
-        ArrayList<Object> list = new ArrayList<Object>();
-        return list;
+
+    public Collection<E> makeConfirmedCollection() {
+        return new ArrayList<E>();
     }
 
-    public Collection<Object> makeConfirmedFullCollection() {
-        ArrayList<Object> list = new ArrayList<Object>();
+    public Collection<E> makeConfirmedFullCollection() {
+        ArrayList<E> list = new ArrayList<E>();
         list.addAll(Arrays.asList(getFullElements()));
         return list;
     }
@@ -74,7 +73,7 @@ public class TestUnmodifiableCollection extends 
AbstractTestCollection<Object> {
     public boolean isAddSupported() {
         return false;
     }
-    
+
     public boolean isRemoveSupported() {
         return false;
     }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/comparators/AbstractTestComparator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/comparators/AbstractTestComparator.java
 
b/src/test/org/apache/commons/collections/comparators/AbstractTestComparator.java
index 8164843..3c95033 100644
--- 
a/src/test/org/apache/commons/collections/comparators/AbstractTestComparator.java
+++ 
b/src/test/org/apache/commons/collections/comparators/AbstractTestComparator.java
@@ -34,7 +34,7 @@ import org.apache.commons.collections.AbstractTestObject;
  * 
  * @author Stephen Colebourne
  */
-public abstract class AbstractTestComparator extends AbstractTestObject {
+public abstract class AbstractTestComparator<T> extends AbstractTestObject {
 
     /**
      * JUnit constructor.
@@ -46,19 +46,13 @@ public abstract class AbstractTestComparator extends 
AbstractTestObject {
     }
 
     //-----------------------------------------------------------------------
-    /**
-     * Implement this method to return the comparator to test.
-     * 
-     * @return the comparator to test
-     */
-    public abstract Comparator makeComparator();
     
     /**
      * Implement this method to return a list of sorted objects.
      * 
      * @return sorted objects
      */
-    public abstract List getComparableObjectsOrdered();
+    public abstract List<T> getComparableObjectsOrdered();
 
     //-----------------------------------------------------------------------
     /**
@@ -66,9 +60,7 @@ public abstract class AbstractTestComparator extends 
AbstractTestObject {
      * 
      * @return a full iterator
      */
-    public Object makeObject() {
-        return makeComparator();
-    }
+    public abstract Comparator<T> makeObject();
 
     /**
      * Overrides superclass to block tests.
@@ -96,23 +88,22 @@ public abstract class AbstractTestComparator extends 
AbstractTestObject {
     /**
      * Reverse the list.
      */
-    protected void reverseObjects(List list) {
+    protected void reverseObjects(List<?> list) {
         Collections.reverse(list);
     }
 
     /**
      * Randomize the list.
      */
-    protected void randomizeObjects(List list) {
+    protected void randomizeObjects(List<?> list) {
         Collections.shuffle(list);
     }
 
     /**
      * Sort the list.
      */
-    protected void sortObjects(List list, Comparator comparator) {
-        Collections.sort(list,comparator);
-
+    protected void sortObjects(List<T> list, Comparator<? super T> comparator) 
{
+        Collections.sort(list, comparator);
     }
 
     //-----------------------------------------------------------------------
@@ -120,43 +111,41 @@ public abstract class AbstractTestComparator extends 
AbstractTestObject {
      * Test sorting an empty list
      */
     public void testEmptyListSort() {
-        List list = new LinkedList();
-        sortObjects(list, makeComparator());
+        List<T> list = new LinkedList<T>();
+        sortObjects(list, makeObject());
+
+        List<T> list2 = new LinkedList<T>();
 
-        List list2 = new LinkedList();
-        
-        assertTrue("Comparator cannot sort empty lists",
-                   list2.equals(list));
+        assertTrue("Comparator cannot sort empty lists", list2.equals(list));
     }
 
     /**
      * Test sorting a reversed list.
      */
     public void testReverseListSort() {
-        Comparator comparator = makeComparator();
+        Comparator<T> comparator = makeObject();
 
-        List randomList = getComparableObjectsOrdered();
+        List<T> randomList = getComparableObjectsOrdered();
         reverseObjects(randomList);
-        sortObjects(randomList,comparator);
+        sortObjects(randomList, comparator);
 
-        List orderedList = getComparableObjectsOrdered();
+        List<T> orderedList = getComparableObjectsOrdered();
 
         assertTrue("Comparator did not reorder the List correctly",
                    orderedList.equals(randomList));
-
     }
 
     /**
      * Test sorting a random list.
      */
     public void testRandomListSort() {
-        Comparator comparator = makeComparator();
+        Comparator<T> comparator = makeObject();
 
-        List randomList = getComparableObjectsOrdered();
+        List<T> randomList = getComparableObjectsOrdered();
         randomizeObjects(randomList);
         sortObjects(randomList,comparator);
 
-        List orderedList = getComparableObjectsOrdered();
+        List<T> orderedList = getComparableObjectsOrdered();
 
         /* debug 
         Iterator i = randomList.iterator();
@@ -174,7 +163,7 @@ public abstract class AbstractTestComparator extends 
AbstractTestObject {
      * Nearly all Comparators should be Serializable.
      */
     public void testComparatorIsSerializable() {
-        Comparator comparator = makeComparator();
+        Comparator<T> comparator = makeObject();
         assertTrue("This comparator should be Serializable.",
                    comparator instanceof Serializable);
     }
@@ -195,37 +184,38 @@ public abstract class AbstractTestComparator extends 
AbstractTestObject {
      * Compare the current serialized form of the Comparator
      * against the canonical version in CVS.
      */
+    @SuppressWarnings("unchecked")
     public void testComparatorCompatibility() throws IOException, 
ClassNotFoundException {
-        if(!skipSerializedCanonicalTests()) {
-            Comparator comparator = null;
+        if (!skipSerializedCanonicalTests()) {
+            Comparator<T> comparator = null;
     
             // test to make sure the canonical form has been preserved
             try {
-                comparator = (Comparator) 
readExternalFormFromDisk(getCanonicalComparatorName(makeComparator()));
+                comparator = (Comparator<T>) 
readExternalFormFromDisk(getCanonicalComparatorName(makeObject()));
                } catch (FileNotFoundException exception) {
     
                 boolean autoCreateSerialized = false;
     
-                   if(autoCreateSerialized) {
-                       comparator = makeComparator();
+                   if (autoCreateSerialized) {
+                       comparator = makeObject();
                        String fileName = 
getCanonicalComparatorName(comparator);
                        writeExternalFormToDisk((Serializable) comparator, 
fileName);
-                       fail("Serialized form could not be found.  A serialized 
version " +
-                            "has now been written (and should be added to 
CVS): " + fileName);
+                       fail("Serialized form could not be found.  A serialized 
version "
+                            + "has now been written (and should be added to 
CVS): " + fileName);
                 } else {
-                    fail("The Serialized form could be located to test 
serialization " +
-                        "compatibility: " + exception.getMessage());
+                    fail("The Serialized form could be located to test 
serialization "
+                            + "compatibility: " + exception.getMessage());
                 }
             }
     
             
             // make sure the canonical form produces the ordering we currently
             // expect
-            List randomList = getComparableObjectsOrdered();
+            List<T> randomList = getComparableObjectsOrdered();
             reverseObjects(randomList);
-            sortObjects(randomList,comparator);
+            sortObjects(randomList, comparator);
     
-            List orderedList = getComparableObjectsOrdered();
+            List<T> orderedList = getComparableObjectsOrdered();
     
             assertTrue("Comparator did not reorder the List correctly",
                        orderedList.equals(randomList));

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/comparators/TestBooleanComparator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/comparators/TestBooleanComparator.java
 
b/src/test/org/apache/commons/collections/comparators/TestBooleanComparator.java
index 5f28b2d..28eac92 100644
--- 
a/src/test/org/apache/commons/collections/comparators/TestBooleanComparator.java
+++ 
b/src/test/org/apache/commons/collections/comparators/TestBooleanComparator.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.
@@ -25,12 +25,12 @@ import junit.framework.TestSuite;
 
 /**
  * Tests for {@link BooleanComparator}.
- * 
+ *
  * @version $Revision$ $Date$
- * 
+ *
  * @author Rodney Waldhoff
  */
-public class TestBooleanComparator extends AbstractTestComparator {
+public class TestBooleanComparator extends AbstractTestComparator<Boolean> {
 
     // conventional
     // ------------------------------------------------------------------------
@@ -46,21 +46,21 @@ public class TestBooleanComparator extends 
AbstractTestComparator {
     // collections testing framework
     // ------------------------------------------------------------------------
 
-    public Comparator makeComparator() {
+    public Comparator<Boolean> makeObject() {
         return new BooleanComparator();
     }
 
-    public List getComparableObjectsOrdered() {
-        List list = new ArrayList();
+    public List<Boolean> getComparableObjectsOrdered() {
+        List<Boolean> list = new ArrayList<Boolean>();
         list.add(new Boolean(false));
         list.add(Boolean.FALSE);
         list.add(new Boolean(false));
         list.add(Boolean.TRUE);
         list.add(new Boolean(true));
-        list.add(Boolean.TRUE);
+        list.add(true);
         return list;
     }
-    
+
     public String getCompatibilityVersion() {
         return "3";
     }
@@ -71,16 +71,16 @@ public class TestBooleanComparator extends 
AbstractTestComparator {
     public void testConstructors() {
         allTests(false,new BooleanComparator());
         allTests(false,new BooleanComparator(false));
-        allTests(true,new BooleanComparator(true));        
+        allTests(true,new BooleanComparator(true));
     }
-    
+
     public void testStaticFactoryMethods() {
         allTests(false,BooleanComparator.getFalseFirstComparator());
         allTests(false,BooleanComparator.getBooleanComparator(false));
         allTests(true,BooleanComparator.getTrueFirstComparator());
         allTests(true,BooleanComparator.getBooleanComparator(true));
     }
-    
+
     public void testEqualsCompatibleInstance() {
         assertEquals(new BooleanComparator(),new BooleanComparator(false));
         assertEquals(new BooleanComparator(false),new 
BooleanComparator(false));
@@ -94,7 +94,7 @@ public class TestBooleanComparator extends 
AbstractTestComparator {
         assertTrue(!(new BooleanComparator().equals(new 
BooleanComparator(true))));
         assertTrue(!(new BooleanComparator(true).equals(new 
BooleanComparator(false))));
     }
-    
+
     // utilities
     // ------------------------------------------------------------------------
 
@@ -109,36 +109,24 @@ public class TestBooleanComparator extends 
AbstractTestComparator {
 
     protected void trueFirstTests(BooleanComparator comp) {
         assertNotNull(comp);
-        assertEquals(0,comp.compare(Boolean.TRUE,Boolean.TRUE));
-        assertEquals(0,comp.compare(Boolean.FALSE,Boolean.FALSE));
-        assertTrue(comp.compare(Boolean.FALSE,Boolean.TRUE) > 0);
-        assertTrue(comp.compare(Boolean.TRUE,Boolean.FALSE) < 0);
-
-        
assertEquals(0,comp.compare((Object)(Boolean.TRUE),(Object)(Boolean.TRUE)));
-        
assertEquals(0,comp.compare((Object)(Boolean.FALSE),(Object)(Boolean.FALSE)));
-        
assertTrue(comp.compare((Object)(Boolean.FALSE),(Object)(Boolean.TRUE)) > 0);
-        
assertTrue(comp.compare((Object)(Boolean.TRUE),(Object)(Boolean.FALSE)) < 0);
+        assertEquals(0,comp.compare(true, true));
+        assertEquals(0,comp.compare(false, false));
+        assertTrue(comp.compare(false, true) > 0);
+        assertTrue(comp.compare(true, false) < 0);
     }
 
     protected void falseFirstTests(BooleanComparator comp) {
         assertNotNull(comp);
-        assertEquals(0,comp.compare(Boolean.TRUE,Boolean.TRUE));
-        assertEquals(0,comp.compare(Boolean.FALSE,Boolean.FALSE));
-        assertTrue(comp.compare(Boolean.FALSE,Boolean.TRUE) < 0);
-        assertTrue(comp.compare(Boolean.TRUE,Boolean.FALSE) > 0);
-
-        
assertEquals(0,comp.compare((Object)(Boolean.TRUE),(Object)(Boolean.TRUE)));
-        
assertEquals(0,comp.compare((Object)(Boolean.FALSE),(Object)(Boolean.FALSE)));
-        
assertTrue(comp.compare((Object)(Boolean.FALSE),(Object)(Boolean.TRUE)) < 0);
-        
assertTrue(comp.compare((Object)(Boolean.TRUE),(Object)(Boolean.FALSE)) > 0);
+        assertEquals(0,comp.compare(true, true));
+        assertEquals(0,comp.compare(false, false));
+        assertTrue(comp.compare(false, true) < 0);
+        assertTrue(comp.compare(true, false) > 0);
     }
 
     protected void orderIndependentTests(BooleanComparator comp) {
         nullArgumentTests(comp);
-        nonBooleanArgumentTests(comp);
-        nullAndNonBooleanArgumentsTests(comp);
     }
-    
+
     protected void nullArgumentTests(BooleanComparator comp) {
         assertNotNull(comp);
         try {
@@ -172,59 +160,5 @@ public class TestBooleanComparator extends 
AbstractTestComparator {
             // expected
         }
     }
-    
-    protected void nonBooleanArgumentTests(BooleanComparator comp) {
-        assertNotNull(comp);
-        try {
-            comp.compare("string","string");
-            fail("Expected ClassCastException");
-        } catch(ClassCastException e) {
-            // expected
-        }
-        try {
-            comp.compare(Boolean.TRUE,"string");
-            fail("Expected ClassCastException");
-        } catch(ClassCastException e) {
-            // expected
-        }
-        try {
-            comp.compare("string",Boolean.TRUE);
-            fail("Expected ClassCastException");
-        } catch(ClassCastException e) {
-            // expected
-        }
-        try {
-            comp.compare("string",new Integer(3));
-            fail("Expected ClassCastException");
-        } catch(ClassCastException e) {
-            // expected
-        }
-        try {
-            comp.compare(new Integer(3),"string");
-            fail("Expected ClassCastException");
-        } catch(ClassCastException e) {
-            // expected
-        }
-    }
-    
-    protected void nullAndNonBooleanArgumentsTests(BooleanComparator comp) {
-        assertNotNull(comp);
-        try {
-            comp.compare(null,"string");
-            fail("Expected ClassCast or NullPointer Exception");
-        } catch(ClassCastException e) {
-            // expected
-        } catch(NullPointerException e) {
-            // expected
-        }
-        try {
-            comp.compare("string",null);
-            fail("Expected ClassCast or NullPointer Exception");
-        } catch(ClassCastException e) {
-            // expected
-        } catch(NullPointerException e) {
-            // expected
-        }
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/comparators/TestComparableComparator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/comparators/TestComparableComparator.java
 
b/src/test/org/apache/commons/collections/comparators/TestComparableComparator.java
index d489749..90d6c8d 100644
--- 
a/src/test/org/apache/commons/collections/comparators/TestComparableComparator.java
+++ 
b/src/test/org/apache/commons/collections/comparators/TestComparableComparator.java
@@ -30,7 +30,7 @@ import junit.framework.TestSuite;
  * 
  * @author Unknown
  */
-public class TestComparableComparator extends AbstractTestComparator {
+public class TestComparableComparator extends AbstractTestComparator<Integer> {
 
     public TestComparableComparator(String testName) {
         super(testName);
@@ -40,17 +40,17 @@ public class TestComparableComparator extends 
AbstractTestComparator {
         return new TestSuite(TestComparableComparator.class);
     }
 
-    public Comparator makeComparator() {
-        return new ComparableComparator();
+    public Comparator<Integer> makeObject() {
+        return new ComparableComparator<Integer>();
     }
 
-    public List getComparableObjectsOrdered() {
-        List list = new LinkedList();
-        list.add(new Integer(1));
-        list.add(new Integer(2));
-        list.add(new Integer(3));
-        list.add(new Integer(4));
-        list.add(new Integer(5));
+    public List<Integer> getComparableObjectsOrdered() {
+        List<Integer> list = new LinkedList<Integer>();
+        list.add(1);
+        list.add(2);
+        list.add(3);
+        list.add(4);
+        list.add(5);
         return list;
     }
 

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java 
b/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java
index d1dda55..1be2041 100644
--- 
a/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java
+++ 
b/src/test/org/apache/commons/collections/comparators/TestComparatorChain.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.
@@ -26,12 +26,12 @@ import junit.framework.TestSuite;
 
 /**
  * Tests for ComparatorChain.
- * 
+ *
  * @version $Revision$ $Date$
- * 
+ *
  * @author Unknown
  */
-public class TestComparatorChain extends AbstractTestComparator {
+public class TestComparatorChain extends 
AbstractTestComparator<TestComparatorChain.PseudoRow> {
 
     public TestComparatorChain(String testName) {
         super(testName);
@@ -41,97 +41,94 @@ public class TestComparatorChain extends 
AbstractTestComparator {
         return new TestSuite(TestComparatorChain.class);
     }
 
-    public Comparator makeComparator() {
-        ComparatorChain chain = new ComparatorChain(new ColumnComparator(0));
-        chain.addComparator(new ColumnComparator(1),true); // reverse the 
second column
-        chain.addComparator(new ColumnComparator(2),false);
+    public Comparator<PseudoRow> makeObject() {
+        ComparatorChain<PseudoRow> chain = new ComparatorChain<PseudoRow>(new 
ColumnComparator(0));
+        chain.addComparator(new ColumnComparator(1), true); // reverse the 
second column
+        chain.addComparator(new ColumnComparator(2), false);
         return chain;
     }
 
     public void testNoopComparatorChain() {
-        ComparatorChain chain = new ComparatorChain();
+        ComparatorChain<Integer> chain = new ComparatorChain<Integer>();
         Integer i1 = new Integer(4);
         Integer i2 = new Integer(6);
-        chain.addComparator(new ComparableComparator());
+        chain.addComparator(new ComparableComparator<Integer>());
 
         int correctValue = i1.compareTo(i2);
-        assertTrue("Comparison returns the right order",chain.compare(i1,i2) 
== correctValue);
+        assertTrue("Comparison returns the right order", chain.compare(i1, i2) 
== correctValue);
     }
 
     public void testBadNoopComparatorChain() {
-        ComparatorChain chain = new ComparatorChain();
+        ComparatorChain<Integer> chain = new ComparatorChain<Integer>();
         Integer i1 = new Integer(4);
         Integer i2 = new Integer(6);
         try {
             chain.compare(i1,i2);
             fail("An exception should be thrown when a chain contains zero 
comparators.");
         } catch (UnsupportedOperationException e) {
-
         }
     }
 
     public void testListComparatorChain() {
-        List list = new LinkedList();
-        list.add(new ComparableComparator());
-        ComparatorChain chain = new ComparatorChain(list);
+        List<Comparator<Integer>> list = new LinkedList<Comparator<Integer>>();
+        list.add(new ComparableComparator<Integer>());
+        ComparatorChain<Integer> chain = new ComparatorChain<Integer>(list);
         Integer i1 = new Integer(4);
         Integer i2 = new Integer(6);
 
         int correctValue = i1.compareTo(i2);
-        assertTrue("Comparison returns the right order",chain.compare(i1,i2) 
== correctValue);
+        assertTrue("Comparison returns the right order", chain.compare(i1, i2) 
== correctValue);
     }
 
     public void testBadListComparatorChain() {
-        List list = new LinkedList();
-        ComparatorChain chain = new ComparatorChain(list);
+        List<Comparator<Integer>> list = new LinkedList<Comparator<Integer>>();
+        ComparatorChain<Integer> chain = new ComparatorChain<Integer>(list);
         Integer i1 = new Integer(4);
         Integer i2 = new Integer(6);
         try {
-            chain.compare(i1,i2);
+            chain.compare(i1, i2);
             fail("An exception should be thrown when a chain contains zero 
comparators.");
         } catch (UnsupportedOperationException e) {
-
         }
     }
 
-
     public void testComparatorChainOnMinvaluedCompatator() {
         // -1 * Integer.MIN_VALUE is less than 0,
         // test that ComparatorChain handles this edge case correctly
-        ComparatorChain chain = new ComparatorChain();
-        chain.addComparator(
-            new Comparator() {
-                public int compare(Object a, Object b) {
-                    int result = ((Comparable)a).compareTo(b);
-                    if(result < 0) {
-                        return Integer.MIN_VALUE;
-                    } else if(result > 0) {
-                        return Integer.MAX_VALUE;
-                    } else {
-                        return 0;
-                    }
+        ComparatorChain<Integer> chain = new ComparatorChain<Integer>();
+        chain.addComparator(new Comparator<Integer>() {
+            public int compare(Integer a, Integer b) {
+                int result = a.compareTo(b);
+                if (result < 0) {
+                    return Integer.MIN_VALUE;
                 }
-            }, true);
+                if (result > 0) {
+                    return Integer.MAX_VALUE;
+                }
+                return 0;
+            }
+        }, true);
 
-        assertTrue(chain.compare(new Integer(4), new Integer(5)) > 0);         
   
-        assertTrue(chain.compare(new Integer(5), new Integer(4)) < 0);         
   
-        assertTrue(chain.compare(new Integer(4), new Integer(4)) == 0);        
    
+        assertTrue(chain.compare(new Integer(4), new Integer(5)) > 0);
+        assertTrue(chain.compare(new Integer(5), new Integer(4)) < 0);
+        assertTrue(chain.compare(new Integer(4), new Integer(4)) == 0);
     }
 
-    public List getComparableObjectsOrdered() {
-        List list = new LinkedList();
+    public List<PseudoRow> getComparableObjectsOrdered() {
+        List<PseudoRow> list = new LinkedList<PseudoRow>();
         // this is the correct order assuming a
         // "0th forward, 1st reverse, 2nd forward" sort
-        list.add(new PseudoRow(1,2,3));
-        list.add(new PseudoRow(2,3,5));
-        list.add(new PseudoRow(2,2,4));
-        list.add(new PseudoRow(2,2,8));
-        list.add(new PseudoRow(3,1,0));
-        list.add(new PseudoRow(4,4,4));
-        list.add(new PseudoRow(4,4,7));
+        list.add(new PseudoRow(1, 2, 3));
+        list.add(new PseudoRow(2, 3, 5));
+        list.add(new PseudoRow(2, 2, 4));
+        list.add(new PseudoRow(2, 2, 8));
+        list.add(new PseudoRow(3, 1, 0));
+        list.add(new PseudoRow(4, 4, 4));
+        list.add(new PseudoRow(4, 4, 7));
         return list;
     }
 
+    @SuppressWarnings("serial")
     public static class PseudoRow implements Serializable {
 
         public int cols[] = new int[3];
@@ -170,8 +167,8 @@ public class TestComparatorChain extends 
AbstractTestComparator {
 
             if (getColumn(1) != row.getColumn(1)) {
                 return false;
-            }            
-            
+            }
+
             if (getColumn(2) != row.getColumn(2)) {
                 return false;
             }
@@ -181,7 +178,8 @@ public class TestComparatorChain extends 
AbstractTestComparator {
 
     }
 
-    public static class ColumnComparator implements Comparator,Serializable {
+    public static class ColumnComparator implements Comparator<PseudoRow>, 
Serializable {
+        private static final long serialVersionUID = -2284880866328872105L;
 
         protected int colIndex = 0;
 
@@ -189,32 +187,26 @@ public class TestComparatorChain extends 
AbstractTestComparator {
             this.colIndex = colIndex;
         }
 
-        public int compare(Object o1, Object o2) {
+        public int compare(PseudoRow o1, PseudoRow o2) {
 
-            int col1 = ( (PseudoRow) o1).getColumn(colIndex);
-            int col2 = ( (PseudoRow) o2).getColumn(colIndex);
+            int col1 = o1.getColumn(colIndex);
+            int col2 = o2.getColumn(colIndex);
 
             if (col1 > col2) {
                 return 1;
-            } else if (col1 < col2) {
+            }
+            if (col1 < col2) {
                 return -1;
             }
-
             return 0;
         }
-        
+
         public int hashCode() {
             return colIndex;
         }
-        
+
         public boolean equals(Object that) {
-            if(that instanceof ColumnComparator) {
-                return colIndex == ((ColumnComparator)that).colIndex;
-            } else {
-                return false;
-            }
+            return that instanceof ColumnComparator && colIndex == 
((ColumnComparator) that).colIndex;
         }
-        
-        private static final long serialVersionUID = -2284880866328872105L;
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/comparators/TestFixedOrderComparator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/comparators/TestFixedOrderComparator.java
 
b/src/test/org/apache/commons/collections/comparators/TestFixedOrderComparator.java
index ae05760..3174cb3 100644
--- 
a/src/test/org/apache/commons/collections/comparators/TestFixedOrderComparator.java
+++ 
b/src/test/org/apache/commons/collections/comparators/TestFixedOrderComparator.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.
@@ -28,15 +28,14 @@ import junit.framework.TestSuite;
 
 /**
  * Test class for FixedOrderComparator.
- * 
+ *
  * @version $Revision$ $Date$
- * 
- * @author David Leppik 
+ *
+ * @author David Leppik
  * @author Stephen Colebourne
  */
 public class TestFixedOrderComparator extends TestCase {
 
-
     /**
      * Top cities of the world, by population including metro areas.
      */
@@ -65,7 +64,7 @@ public class TestFixedOrderComparator extends TestCase {
         return new TestSuite(TestFixedOrderComparator.class);
     }
 
-    public static void main(String args[]) { 
+    public static void main(String args[]) {
         junit.textui.TestRunner.run(suite());
     }
 
@@ -79,11 +78,11 @@ public class TestFixedOrderComparator extends TestCase {
     // The tests
     //
 
-    /** 
-     * Tests that the constructor plus add method compares items properly. 
+    /**
+     * Tests that the constructor plus add method compares items properly.
      */
     public void testConstructorPlusAdd() {
-        FixedOrderComparator comparator = new FixedOrderComparator();
+        FixedOrderComparator<String> comparator = new 
FixedOrderComparator<String>();
         for (int i = 0; i < topCities.length; i++) {
             comparator.add(topCities[i]);
         }
@@ -91,13 +90,13 @@ public class TestFixedOrderComparator extends TestCase {
         assertComparatorYieldsOrder(keys, comparator);
     }
 
-    /** 
-     * Tests that the array constructor compares items properly. 
+    /**
+     * Tests that the array constructor compares items properly.
      */
     public void testArrayConstructor() {
         String[] keys = (String[]) topCities.clone();
         String[] topCitiesForTest = (String[]) topCities.clone();
-        FixedOrderComparator comparator = new 
FixedOrderComparator(topCitiesForTest);
+        FixedOrderComparator<String> comparator = new 
FixedOrderComparator<String>(topCitiesForTest);
         assertComparatorYieldsOrder(keys, comparator);
         // test that changing input after constructor has no effect
         topCitiesForTest[0] = "Brighton";
@@ -105,12 +104,12 @@ public class TestFixedOrderComparator extends TestCase {
     }
 
     /**
-     * Tests the list constructor. 
+     * Tests the list constructor.
      */
     public void testListConstructor() {
         String[] keys = (String[]) topCities.clone();
-        List topCitiesForTest = new LinkedList(Arrays.asList(topCities));
-        FixedOrderComparator comparator = new 
FixedOrderComparator(topCitiesForTest);
+        List<String> topCitiesForTest = new 
LinkedList<String>(Arrays.asList(topCities));
+        FixedOrderComparator<String> comparator = new 
FixedOrderComparator<String>(topCitiesForTest);
         assertComparatorYieldsOrder(keys, comparator);
         // test that changing input after constructor has no effect
         topCitiesForTest.set(0, "Brighton");
@@ -121,18 +120,18 @@ public class TestFixedOrderComparator extends TestCase {
      * Tests addAsEqual method.
      */
     public void testAddAsEqual() {
-        FixedOrderComparator comparator = new FixedOrderComparator(topCities);
+        FixedOrderComparator<String> comparator = new 
FixedOrderComparator<String>(topCities);
         comparator.addAsEqual("New York", "Minneapolis");
         assertEquals(0, comparator.compare("New York", "Minneapolis"));
         assertEquals(-1, comparator.compare("Tokyo", "Minneapolis"));
         assertEquals(1, comparator.compare("Shanghai", "Minneapolis"));
     }
 
-    /** 
+    /**
      * Tests whether or not updates are disabled after a comparison is made.
      */
     public void testLock() {
-        FixedOrderComparator comparator = new FixedOrderComparator(topCities);
+        FixedOrderComparator<String> comparator = new 
FixedOrderComparator<String>(topCities);
         assertEquals(false, comparator.isLocked());
         comparator.compare("New York", "Tokyo");
         assertEquals(true, comparator.isLocked());
@@ -152,7 +151,7 @@ public class TestFixedOrderComparator extends TestCase {
     }
 
     public void testUnknownObjectBehavior() {
-        FixedOrderComparator comparator = new FixedOrderComparator(topCities);
+        FixedOrderComparator<String> comparator = new 
FixedOrderComparator<String>(topCities);
         try {
             comparator.compare("New York", "Minneapolis");
             fail("Should have thrown a IllegalArgumentException");
@@ -165,42 +164,43 @@ public class TestFixedOrderComparator extends TestCase {
         } catch (IllegalArgumentException e) {
             // success-- ignore
         }
-        assertEquals(FixedOrderComparator.UNKNOWN_THROW_EXCEPTION, 
comparator.getUnknownObjectBehavior());
+        assertEquals(FixedOrderComparator.UnknownObjectBehavior.EXCEPTION, 
comparator.getUnknownObjectBehavior());
 
-        comparator = new FixedOrderComparator(topCities);
-        
comparator.setUnknownObjectBehavior(FixedOrderComparator.UNKNOWN_BEFORE);
-        assertEquals(FixedOrderComparator.UNKNOWN_BEFORE, 
comparator.getUnknownObjectBehavior());
-        LinkedList keys = new LinkedList(Arrays.asList(topCities));
+        comparator = new FixedOrderComparator<String>(topCities);
+        
comparator.setUnknownObjectBehavior(FixedOrderComparator.UnknownObjectBehavior.BEFORE);
+        assertEquals(FixedOrderComparator.UnknownObjectBehavior.BEFORE, 
comparator.getUnknownObjectBehavior());
+        LinkedList<String> keys = new 
LinkedList<String>(Arrays.asList(topCities));
         keys.addFirst("Minneapolis");
         assertComparatorYieldsOrder(keys.toArray(new String[0]), comparator);
-        
+
         assertEquals(-1, comparator.compare("Minneapolis", "New York"));
         assertEquals( 1, comparator.compare("New York", "Minneapolis"));
         assertEquals( 0, comparator.compare("Minneapolis", "St Paul"));
 
-        comparator = new FixedOrderComparator(topCities);
-        
comparator.setUnknownObjectBehavior(FixedOrderComparator.UNKNOWN_AFTER);
-        keys = new LinkedList(Arrays.asList(topCities));
+        comparator = new FixedOrderComparator<String>(topCities);
+        
comparator.setUnknownObjectBehavior(FixedOrderComparator.UnknownObjectBehavior.AFTER);
+        keys = new LinkedList<String>(Arrays.asList(topCities));
         keys.add("Minneapolis");
         assertComparatorYieldsOrder(keys.toArray(new String[0]), comparator);
-        
+
         assertEquals( 1, comparator.compare("Minneapolis", "New York"));
         assertEquals(-1, comparator.compare("New York", "Minneapolis"));
         assertEquals( 0, comparator.compare("Minneapolis", "St Paul"));
-        
+
     }
-    
+
     //
     // Helper methods
     //
-    
+
     /** Shuffles the keys and asserts that the comparator sorts them back to
      * their original order.
      */
-    private void assertComparatorYieldsOrder(Object[] orderedObjects, 
-                                             Comparator comparator) {
-        Object[] keys = (Object[]) orderedObjects.clone();
-        
+    @SuppressWarnings("unused")
+    private void assertComparatorYieldsOrder(String[] orderedObjects,
+                                             Comparator<String> comparator) {
+        String[] keys = orderedObjects.clone();
+
         // shuffle until the order changes.  It's extremely rare that
         // this requires more than one shuffle.
 
@@ -209,13 +209,13 @@ public class TestFixedOrderComparator extends TestCase {
             shuffle: {
                 Random rand = new Random();
                 for (int i = keys.length-1; i > 0; i--) {
-                        Object swap = keys[i];
+                        String swap = keys[i];
                         int j = rand.nextInt(i+1);
                         keys[i] = keys[j];
-                        keys[j] = swap;     
+                        keys[j] = swap;
                     }
             }
-        
+
             testShuffle: {
                 for (int i = 0; i < keys.length && !isInNewOrder; i++) {
                     if( !orderedObjects[i].equals(keys[i])) {
@@ -224,14 +224,14 @@ public class TestFixedOrderComparator extends TestCase {
                 }
             }
         }
-        
+
         // The real test:  sort and make sure they come out right.
-        
+
         Arrays.sort(keys, comparator);
 
         for (int i = 0; i < orderedObjects.length; i++) {
             assertEquals(orderedObjects[i], keys[i]);
         }
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/comparators/TestNullComparator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/comparators/TestNullComparator.java 
b/src/test/org/apache/commons/collections/comparators/TestNullComparator.java
index 26ae6ba..c57f25d 100644
--- 
a/src/test/org/apache/commons/collections/comparators/TestNullComparator.java
+++ 
b/src/test/org/apache/commons/collections/comparators/TestNullComparator.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.
@@ -25,12 +25,12 @@ import junit.framework.TestSuite;
 
 /**
  * Test the NullComparator.
- * 
+ *
  * @version $Revision$ $Date$
- * 
+ *
  * @author Michael A. Smith
  */
-public abstract class TestNullComparator extends AbstractTestComparator {
+public abstract class TestNullComparator extends 
AbstractTestComparator<Integer> {
 
     public TestNullComparator(String testName) {
         super(testName);
@@ -48,45 +48,45 @@ public abstract class TestNullComparator extends 
AbstractTestComparator {
      **/
     public static class TestNullComparator1 extends TestNullComparator {
 
-       public TestNullComparator1(String testName) {
-           super(testName);
-       }
+       public TestNullComparator1(String testName) {
+           super(testName);
+       }
 
-    public Comparator makeComparator() {
-           return new NullComparator();
-       }
-       
-    public List getComparableObjectsOrdered() {
-        List list = new LinkedList();
-           list.add(new Integer(1));
-           list.add(new Integer(2));
-           list.add(new Integer(3));
-           list.add(new Integer(4));
-           list.add(new Integer(5));
-           list.add(null);
-           return list;
-       }
+        public Comparator<Integer> makeObject() {
+           return new NullComparator<Integer>();
+       }
 
-       public String getCanonicalComparatorName(Object object) {
-           return super.getCanonicalComparatorName(object) + "1";
-       }
+        public List<Integer> getComparableObjectsOrdered() {
+            List<Integer> list = new LinkedList<Integer>();
+           list.add(new Integer(1));
+           list.add(new Integer(2));
+           list.add(new Integer(3));
+           list.add(new Integer(4));
+           list.add(new Integer(5));
+           list.add(null);
+           return list;
+       }
+
+       public String getCanonicalComparatorName(Object object) {
+           return super.getCanonicalComparatorName(object) + "1";
+       }
     }
 
     /**
      *  Test the NullComparator with nulls low using the comparable comparator
      **/
     public static class TestNullComparator2 extends TestNullComparator {
-        
+
         public TestNullComparator2(String testName) {
             super(testName);
         }
-        
-        public Comparator makeComparator() {
-            return new NullComparator(false);
+
+        public Comparator<Integer> makeObject() {
+            return new NullComparator<Integer>(false);
         }
-        
-        public List getComparableObjectsOrdered() {
-            List list = new LinkedList();
+
+        public List<Integer> getComparableObjectsOrdered() {
+            List<Integer> list = new LinkedList<Integer>();
             list.add(null);
             list.add(new Integer(1));
             list.add(new Integer(2));
@@ -95,7 +95,7 @@ public abstract class TestNullComparator extends 
AbstractTestComparator {
             list.add(new Integer(5));
             return list;
         }
-        
+
         public String getCanonicalComparatorName(Object object) {
             return super.getCanonicalComparatorName(object) + "2";
         }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/comparators/TestReverseComparator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/comparators/TestReverseComparator.java
 
b/src/test/org/apache/commons/collections/comparators/TestReverseComparator.java
index 43f168c..f12a073 100644
--- 
a/src/test/org/apache/commons/collections/comparators/TestReverseComparator.java
+++ 
b/src/test/org/apache/commons/collections/comparators/TestReverseComparator.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,12 +30,12 @@ import junit.framework.TestSuite;
 
 /**
  * Tests for ReverseComparator.
- * 
+ *
  * @version $Revision$ $Date$
- * 
+ *
  * @author Unknown
  */
-public class TestReverseComparator extends AbstractTestComparator {
+public class TestReverseComparator extends AbstractTestComparator<Integer> {
 
     public TestReverseComparator(String testName) {
         super(testName);
@@ -46,21 +46,21 @@ public class TestReverseComparator extends 
AbstractTestComparator {
     }
 
     /**
-     * For the purposes of this test, return a 
+     * For the purposes of this test, return a
      * ReverseComparator that wraps the java.util.Collections.reverseOrder()
      * Comparator.  The resulting comparator should
      * sort according to natural Order.  (Note: we wrap
      * a Comparator taken from the JDK so that we can
      * save a "canonical" form in CVS.
-     * 
+     *
      * @return Comparator that returns "natural" order
      */
-    public Comparator makeComparator() {
-        return new ReverseComparator(Collections.reverseOrder());
+    public Comparator<Integer> makeObject() {
+        return new 
ReverseComparator<Integer>(Collections.<Integer>reverseOrder());
     }
 
-    public List getComparableObjectsOrdered() {
-        List list = new LinkedList();
+    public List<Integer> getComparableObjectsOrdered() {
+        List<Integer> list = new LinkedList<Integer>();
         list.add(new Integer(1));
         list.add(new Integer(2));
         list.add(new Integer(3));
@@ -69,11 +69,12 @@ public class TestReverseComparator extends 
AbstractTestComparator {
         return list;
     }
 
-    /** 
+    /**
      * Override this inherited test since Collections.reverseOrder
      * doesn't adhere to the "soft" Comparator contract, and we've
      * already "cannonized" the comparator returned by makeComparator.
      */
+    @SuppressWarnings("unchecked")
     public void testSerializeDeserializeThenCompare() throws Exception {
         Comparator comp = new ReverseComparator(new ComparableComparator());
 
@@ -81,7 +82,7 @@ public class TestReverseComparator extends 
AbstractTestComparator {
         ObjectOutputStream out = new ObjectOutputStream(buffer);
         out.writeObject(comp);
         out.close();
-            
+
         ObjectInputStream in = new ObjectInputStream(new 
ByteArrayInputStream(buffer.toByteArray()));
         Object dest = in.readObject();
         in.close();

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/functors/TestAllPredicate.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/functors/TestAllPredicate.java 
b/src/test/org/apache/commons/collections/functors/TestAllPredicate.java
index db52bca..50fe7b2 100644
--- a/src/test/org/apache/commons/collections/functors/TestAllPredicate.java
+++ b/src/test/org/apache/commons/collections/functors/TestAllPredicate.java
@@ -49,7 +49,7 @@ public class TestAllPredicate extends 
TestAnyAllOnePredicate<Integer> {
      * {@inheritDoc}
      */    
     @Override
-    protected final Predicate<Integer> getPredicateInstance(final 
Collection<Predicate<? super Integer>> predicates) {
+    protected final Predicate<Integer> getPredicateInstance(final 
Collection<Predicate<Integer>> predicates) {
         return AllPredicate.allPredicate(predicates);
     }
 
@@ -58,8 +58,7 @@ public class TestAllPredicate extends 
TestAnyAllOnePredicate<Integer> {
      */
     @SuppressWarnings({"unchecked"})
     @Test
-    public void emptyArrayToGetInstance()
-    {
+    public void emptyArrayToGetInstance() {
         assertTrue("empty array not true", getPredicateInstance(new 
Predicate[] {}).evaluate(null));
     }
 
@@ -67,19 +66,18 @@ public class TestAllPredicate extends 
TestAnyAllOnePredicate<Integer> {
      * Verifies that providing an empty predicate collection evaluates to true.
      */
     @Test
-    public void emptyCollectionToGetInstance()
-    {
+    public void emptyCollectionToGetInstance() {
         final Predicate<Integer> allPredicate = getPredicateInstance(
-                Collections.<Predicate<? super Integer>>emptyList());
+                Collections.<Predicate<Integer>>emptyList());
         assertTrue("empty collection not true", 
allPredicate.evaluate(getTestValue()));
     }
 
     /**
      * Tests whether a single true predicate evaluates to true.
      */
+    @SuppressWarnings("unchecked")
     @Test
-    public void oneTruePredicate()
-    {
+    public void oneTruePredicate() {
         // use the constructor directly, as getInstance() returns the original 
predicate when passed
         // an array of size one.
         final Predicate<Integer> predicate = createMockPredicate(true);
@@ -91,9 +89,9 @@ public class TestAllPredicate extends 
TestAnyAllOnePredicate<Integer> {
     /**
      * Tests whether a single false predicate evaluates to true.
      */
+    @SuppressWarnings("unchecked")
     @Test
-    public void oneFalsePredicate()
-    {
+    public void oneFalsePredicate() {
         // use the constructor directly, as getInstance() returns the original 
predicate when passed
         // an array of size one.
         final Predicate<Integer> predicate = createMockPredicate(false);
@@ -105,8 +103,7 @@ public class TestAllPredicate extends 
TestAnyAllOnePredicate<Integer> {
      * Tests whether multiple true predicates evaluates to true.
      */
     @Test
-    public void allTrue()
-    {
+    public void allTrue() {
         assertTrue("multiple true predicates evaluated to false",
                 getPredicateInstance(true, true).evaluate(getTestValue()));
         assertTrue("multiple true predicates evaluated to false",
@@ -118,8 +115,7 @@ public class TestAllPredicate extends 
TestAnyAllOnePredicate<Integer> {
      * false predicate is actually evaluated
      */
     @Test
-    public void trueAndFalseCombined()
-    {
+    public void trueAndFalseCombined() {
         assertFalse("false predicate evaluated to true",
                 getPredicateInstance(false, null).evaluate(getTestValue()));
         assertFalse("false predicate evaluated to true",

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/functors/TestAnyAllOnePredicate.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/functors/TestAnyAllOnePredicate.java 
b/src/test/org/apache/commons/collections/functors/TestAnyAllOnePredicate.java
index c55cdf0..8870a92 100644
--- 
a/src/test/org/apache/commons/collections/functors/TestAnyAllOnePredicate.java
+++ 
b/src/test/org/apache/commons/collections/functors/TestAnyAllOnePredicate.java
@@ -1,3 +1,19 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  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.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
 package org.apache.commons.collections.functors;
 
 import org.apache.commons.collections.Predicate;
@@ -27,13 +43,12 @@ public abstract class TestAnyAllOnePredicate<T> extends 
TestCompositePredicate<T
         super(testValue);
     }
 
-
     /**
      * Tests whether <code>getInstance</code> with a one element array returns 
the first element in the array.
      */
+    @SuppressWarnings("unchecked")
     @Test
-    public final void singleElementArrayToGetInstance()
-    {
+    public final void singleElementArrayToGetInstance() {
         final Predicate<T> predicate = createMockPredicate(null);
         final Predicate<T> allPredicate = getPredicateInstance(predicate);
         assertSame("expected argument to be returned by getInstance()", 
predicate, allPredicate);
@@ -44,11 +59,10 @@ public abstract class TestAnyAllOnePredicate<T> extends 
TestCompositePredicate<T
      * collection.
      */
     @Test
-    public final void singletonCollectionToGetInstance()
-    {
+    public final void singletonCollectionToGetInstance() {
         final Predicate<T> predicate = createMockPredicate(null);
         final Predicate<T> allPredicate = getPredicateInstance(
-                Collections.<Predicate<? super T>>singleton(predicate));
+                Collections.<Predicate<T>>singleton(predicate));
         assertSame("expected singleton collection member to be returned by 
getInstance()",
                 predicate, allPredicate);
     }
@@ -57,8 +71,7 @@ public abstract class TestAnyAllOnePredicate<T> extends 
TestCompositePredicate<T
      * Tests creating composite predicate instances with single predicates and 
verifies that the composite returns
      * the same value as the single predicate does. 
      */
-    public final void singleValues()
-    {
+    public final void singleValues() {
         assertTrue(getPredicateInstance(true).evaluate(null));
         assertFalse(getPredicateInstance(false).evaluate(null));
     }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/functors/TestCompositePredicate.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/functors/TestCompositePredicate.java 
b/src/test/org/apache/commons/collections/functors/TestCompositePredicate.java
index 981a1d9..65b4e29 100644
--- 
a/src/test/org/apache/commons/collections/functors/TestCompositePredicate.java
+++ 
b/src/test/org/apache/commons/collections/functors/TestCompositePredicate.java
@@ -45,7 +45,7 @@ public abstract class TestCompositePredicate<T> extends 
MockPredicateTestBase<T>
      *
      * @return a predicate to test.
      */
-    protected abstract Predicate<T> getPredicateInstance(final 
Collection<Predicate<? super T>> predicates);
+    protected abstract Predicate<T> getPredicateInstance(final 
Collection<Predicate<T>> predicates);
 
     /**
      * Creates an instance of the predicate to test.
@@ -55,20 +55,19 @@ public abstract class TestCompositePredicate<T> extends 
MockPredicateTestBase<T>
      *
      * @return a predicate to test.
      */
-    protected final Predicate<T> getPredicateInstance(final Boolean ... 
mockReturnValues)
-    {
-        final List<Predicate<? super T>> predicates = new 
ArrayList<Predicate<? super T>>();
+    protected final Predicate<T> getPredicateInstance(final Boolean... 
mockReturnValues) {
+        final List<Predicate<T>> predicates = new ArrayList<Predicate<T>>();
         for (Boolean returnValue : mockReturnValues) {
             predicates.add(createMockPredicate(returnValue));
-        }        
+        }
         return getPredicateInstance(predicates);
     }
 
     /**
      * Tests whether <code>getInstance</code> with a one element array returns 
the first element in the array.
      */
-    public void singleElementArrayToGetInstance()
-    {
+    @SuppressWarnings("unchecked")
+    public void singleElementArrayToGetInstance() {
         final Predicate<T> predicate = createMockPredicate(null);
         final Predicate<T> allPredicate = getPredicateInstance(predicate);
         Assert.assertSame("expected argument to be returned by getInstance()", 
predicate, allPredicate);
@@ -78,18 +77,16 @@ public abstract class TestCompositePredicate<T> extends 
MockPredicateTestBase<T>
      * Tests that passing a singleton collection to <code>getInstance</code> 
returns the single element in the
      * collection.
      */
-    public void singletonCollectionToGetInstance()
-    {
+    public void singletonCollectionToGetInstance() {
         final Predicate<T> predicate = createMockPredicate(null);
         final Predicate<T> allPredicate = getPredicateInstance(
-                Collections.<Predicate<? super T>>singleton(predicate));
+                Collections.<Predicate<T>>singleton(predicate));
         Assert.assertSame("expected argument to be returned by getInstance()", 
predicate, allPredicate);
     }
 
     /**
      * Tests <code>getInstance</code> with a null predicate array.
      */
-    @SuppressWarnings({"unchecked"})
     @Test(expected = IllegalArgumentException.class)
     public final void nullArrayToGetInstance() {
         getPredicateInstance((Predicate<T>[]) null);
@@ -119,7 +116,7 @@ public abstract class TestCompositePredicate<T> extends 
MockPredicateTestBase<T>
      */
     @Test(expected = IllegalArgumentException.class)
     public final void nullCollectionToGetInstance() {
-        getPredicateInstance((Collection<Predicate<? super T>>) null);
+        getPredicateInstance((Collection<Predicate<T>>) null);
     }
 
     /**
@@ -127,7 +124,7 @@ public abstract class TestCompositePredicate<T> extends 
MockPredicateTestBase<T>
      */
     @Test(expected = IllegalArgumentException.class)
     public final void nullElementsInCollectionToGetInstance() {
-        final Collection<Predicate<? super T>> coll = new 
ArrayList<Predicate<? super T>>();
+        final Collection<Predicate<T>> coll = new ArrayList<Predicate<T>>();
         coll.add(null);
         coll.add(null);
         getPredicateInstance(coll);

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java 
b/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java
index ce3f52b..695aee8 100644
--- 
a/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java
+++ 
b/src/test/org/apache/commons/collections/iterators/AbstractTestIterator.java
@@ -35,7 +35,7 @@ import org.apache.commons.collections.AbstractTestObject;
  * @author Morgan Delagrange
  * @author Stephen Colebourne
  */
-public abstract class AbstractTestIterator extends AbstractTestObject {
+public abstract class AbstractTestIterator<E> extends AbstractTestObject {
 
     /**
      * JUnit constructor.
@@ -52,23 +52,14 @@ public abstract class AbstractTestIterator extends 
AbstractTestObject {
      * 
      * @return an empty iterator
      */
-    public abstract Iterator makeEmptyIterator();
-
-    /**
-     * Implement this method to return an iterator over a collection with 
elements.
-     * 
-     * @return a full iterator
-     */
-    public abstract Iterator makeFullIterator();
+    public abstract Iterator<E> makeEmptyIterator();
 
     /**
      * Implements the abstract superclass method to return the full iterator.
      * 
      * @return a full iterator
      */
-    public Object makeObject() {
-        return makeFullIterator();
-    }
+    public abstract Iterator<E> makeObject();
 
     /**
      * Whether or not we are testing an iterator that can be empty.
@@ -116,7 +107,7 @@ public abstract class AbstractTestIterator extends 
AbstractTestObject {
             return;
         }
 
-        Iterator it = makeEmptyIterator();
+        Iterator<E> it = makeEmptyIterator();
         
         // hasNext() should return false
         assertEquals("hasNext() should return false for empty iterators", 
false, it.hasNext());
@@ -140,7 +131,7 @@ public abstract class AbstractTestIterator extends 
AbstractTestObject {
             return;
         }
 
-        Iterator it = makeFullIterator();
+        Iterator<E> it = makeObject();
 
         // hasNext() must be true (ensure makeFullIterator is correct!)
         assertEquals("hasNext() should return true for at least one element", 
true, it.hasNext());
@@ -172,7 +163,7 @@ public abstract class AbstractTestIterator extends 
AbstractTestObject {
      * Test remove behaviour.
      */
     public void testRemove() {
-        Iterator it = makeFullIterator();
+        Iterator<E> it = makeObject();
         
         if (supportsRemove() == false) {
             // check for UnsupportedOperationException if not supported

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/iterators/AbstractTestListIterator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/iterators/AbstractTestListIterator.java
 
b/src/test/org/apache/commons/collections/iterators/AbstractTestListIterator.java
index 631952c..8ca9e3d 100644
--- 
a/src/test/org/apache/commons/collections/iterators/AbstractTestListIterator.java
+++ 
b/src/test/org/apache/commons/collections/iterators/AbstractTestListIterator.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.
@@ -17,7 +17,6 @@
 package org.apache.commons.collections.iterators;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.ListIterator;
 import java.util.NoSuchElementException;
 
@@ -28,18 +27,18 @@ import java.util.NoSuchElementException;
  * Concrete subclasses must provide the list iterator to be tested.
  * They must also specify certain details of how the list iterator operates by
  * overriding the supportsXxx() methods if necessary.
- * 
+ *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Rodney Waldhoff
  * @author Stephen Colebourne
  */
-public abstract class AbstractTestListIterator extends AbstractTestIterator {
+public abstract class AbstractTestListIterator<E> extends 
AbstractTestIterator<E> {
 
     /**
      * JUnit constructor.
-     * 
+     *
      * @param testName  the test class name
      */
     public AbstractTestListIterator(String testName) {
@@ -48,41 +47,23 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
 
     //-----------------------------------------------------------------------
     /**
-     * Implement this method to return a list iterator over an empty 
collection.
-     * 
-     * @return an empty iterator
-     */
-    public abstract ListIterator makeEmptyListIterator();
-
-    /**
-     * Implement this method to return a list iterator over a collection with 
elements.
-     * 
-     * @return a full iterator
-     */
-    public abstract ListIterator makeFullListIterator();
-
-    /**
      * Implements the abstract superclass method to return the list iterator.
-     * 
+     *
      * @return an empty iterator
      */
-    public Iterator makeEmptyIterator() {
-        return makeEmptyListIterator();
-    }
+    public abstract ListIterator<E> makeEmptyIterator();
 
     /**
      * Implements the abstract superclass method to return the list iterator.
-     * 
+     *
      * @return a full iterator
      */
-    public Iterator makeFullIterator() {
-        return makeFullListIterator();
-    }
+    public abstract ListIterator<E> makeObject();
 
     /**
      * Whether or not we are testing an iterator that supports add().
      * Default is true.
-     * 
+     *
      * @return true if Iterator supports add
      */
     public boolean supportsAdd() {
@@ -92,7 +73,7 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
     /**
      * Whether or not we are testing an iterator that supports set().
      * Default is true.
-     * 
+     *
      * @return true if Iterator supports set
      */
     public boolean supportsSet() {
@@ -103,7 +84,7 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
      * The value to be used in the add and set tests.
      * Default is null.
      */
-    public Object addSetValue() {
+    public E addSetValue() {
         return null;
     }
 
@@ -116,20 +97,20 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
             return;
         }
 
-        ListIterator it = makeEmptyListIterator();
-        
+        ListIterator<E> it = makeEmptyIterator();
+
         assertEquals(false, it.hasNext());
         assertEquals(0, it.nextIndex());
         assertEquals(false, it.hasPrevious());
         assertEquals(-1, it.previousIndex());
-        
+
         // next() should throw a NoSuchElementException
         try {
             it.next();
             fail("NoSuchElementException must be thrown from empty 
ListIterator");
         } catch (NoSuchElementException e) {
         }
-        
+
         // previous() should throw a NoSuchElementException
         try {
             it.previous();
@@ -137,17 +118,17 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
         } catch (NoSuchElementException e) {
         }
     }
-    
+
     /**
      * Test navigation through the iterator.
      */
     public void testWalkForwardAndBack() {
-        ArrayList list = new ArrayList();
-        ListIterator it = makeFullListIterator();
+        ArrayList<E> list = new ArrayList<E>();
+        ListIterator<E> it = makeObject();
         while (it.hasNext()) {
             list.add(it.next());
         }
-        
+
         // check state at end
         assertEquals(false, it.hasNext());
         assertEquals(true, it.hasPrevious());
@@ -156,16 +137,16 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
             fail("NoSuchElementException must be thrown from next at end of 
ListIterator");
         } catch (NoSuchElementException e) {
         }
-        
+
         // loop back through comparing
         for (int i = list.size() - 1; i >= 0; i--) {
             assertEquals(i + 1, it.nextIndex());
             assertEquals(i, it.previousIndex());
-        
+
             Object obj = list.get(i);
             assertEquals(obj, it.previous());
         }
-        
+
         // check state at start
         assertEquals(true, it.hasNext());
         assertEquals(false, it.hasPrevious());
@@ -175,14 +156,14 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
         } catch (NoSuchElementException e) {
         }
     }
-    
+
     /**
      * Test add behaviour.
      */
     public void testAdd() {
-        ListIterator it = makeFullListIterator();
-        
-        Object addValue = addSetValue();
+        ListIterator<E> it = makeObject();
+
+        E addValue = addSetValue();
         if (supportsAdd() == false) {
             // check for UnsupportedOperationException if not supported
             try {
@@ -190,34 +171,34 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
             } catch (UnsupportedOperationException ex) {}
             return;
         }
-        
+
         // add at start should be OK, added should be previous
-        it = makeFullListIterator();
+        it = makeObject();
         it.add(addValue);
         assertEquals(addValue, it.previous());
 
         // add at start should be OK, added should not be next
-        it = makeFullListIterator();
+        it = makeObject();
         it.add(addValue);
         assertTrue(addValue != it.next());
 
         // add in middle and at end should be OK
-        it = makeFullListIterator();
+        it = makeObject();
         while (it.hasNext()) {
             it.next();
             it.add(addValue);
             // check add OK
             assertEquals(addValue, it.previous());
             it.next();
-        }        
+        }
     }
-    
+
     /**
      * Test set behaviour.
      */
     public void testSet() {
-        ListIterator it = makeFullListIterator();
-        
+        ListIterator<E> it = makeObject();
+
         if (supportsSet() == false) {
             // check for UnsupportedOperationException if not supported
             try {
@@ -225,24 +206,24 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
             } catch (UnsupportedOperationException ex) {}
             return;
         }
-        
+
         // should throw IllegalStateException before next() called
         try {
             it.set(addSetValue());
             fail();
         } catch (IllegalStateException ex) {}
-        
+
         // set after next should be fine
         it.next();
         it.set(addSetValue());
-        
+
         // repeated set calls should be fine
         it.set(addSetValue());
 
     }
-    
+
     public void testRemoveThenSet() {
-        ListIterator it = makeFullListIterator();
+        ListIterator<E> it = makeObject();
         if (supportsRemove() && supportsSet()) {
             it.next();
             it.remove();
@@ -255,7 +236,7 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
     }
 
     public void testAddThenSet() {
-        ListIterator it = makeFullListIterator();        
+        ListIterator<E> it = makeObject();
         // add then set
         if (supportsAdd() && supportsSet()) {
             it.next();
@@ -267,13 +248,13 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
             }
         }
     }
-    
+
     /**
      * Test remove after add behaviour.
      */
     public void testAddThenRemove() {
-        ListIterator it = makeFullListIterator();
-        
+        ListIterator<E> it = makeObject();
+
         // add then remove
         if (supportsAdd() && supportsRemove()) {
             it.next();
@@ -285,5 +266,5 @@ public abstract class AbstractTestListIterator extends 
AbstractTestIterator {
             }
         }
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java
 
b/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java
index 7d3752a..445cf7b 100644
--- 
a/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java
+++ 
b/src/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.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.
@@ -17,7 +17,6 @@
 package org.apache.commons.collections.iterators;
 
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
@@ -31,17 +30,17 @@ import org.apache.commons.collections.MapIterator;
  * Concrete subclasses must provide the list iterator to be tested.
  * They must also specify certain details of how the list iterator operates by
  * overriding the supportsXxx() methods if necessary.
- * 
+ *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Stephen Colebourne
  */
-public abstract class AbstractTestMapIterator extends AbstractTestIterator {
+public abstract class AbstractTestMapIterator<K, V> extends 
AbstractTestIterator<K> {
 
     /**
      * JUnit constructor.
-     * 
+     *
      * @param testName  the test class name
      */
     public AbstractTestMapIterator(String testName) {
@@ -51,56 +50,38 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
     //-----------------------------------------------------------------------
     /**
      * Implement this method to return a map iterator over an empty map.
-     * 
+     *
      * @return an empty iterator
      */
-    public abstract MapIterator makeEmptyMapIterator();
+    public abstract MapIterator<K, V> makeEmptyIterator();
 
     /**
      * Implement this method to return a map iterator over a map with elements.
-     * 
+     *
      * @return a full iterator
      */
-    public abstract MapIterator makeFullMapIterator();
+    public abstract MapIterator<K, V> makeObject();
 
     /**
      * Implement this method to return the map which contains the same data as 
the
      * iterator.
-     * 
+     *
      * @return a full map which can be updated
      */
-    public abstract Map getMap();
-    
+    public abstract Map<K, V> getMap();
+
     /**
      * Implement this method to return the confirmed map which contains the 
same
      * data as the iterator.
-     * 
+     *
      * @return a full map which can be updated
      */
-    public abstract Map getConfirmedMap();
-    
-    /**
-     * Implements the abstract superclass method to return the list iterator.
-     * 
-     * @return an empty iterator
-     */
-    public final Iterator makeEmptyIterator() {
-        return makeEmptyMapIterator();
-    }
-
-    /**
-     * Implements the abstract superclass method to return the list iterator.
-     * 
-     * @return a full iterator
-     */
-    public final Iterator makeFullIterator() {
-        return makeFullMapIterator();
-    }
+    public abstract Map<K, V> getConfirmedMap();
 
     /**
      * Whether or not we are testing an iterator that supports setValue().
      * Default is true.
-     * 
+     *
      * @return true if Iterator supports set
      */
     public boolean supportsSetValue() {
@@ -110,19 +91,20 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
     /**
      * Whether the get operation on the map structurally modifies the map,
      * such as with LRUMap. Default is false.
-     * 
+     *
      * @return true if the get method structurally modifies the map
      */
     public boolean isGetStructuralModify() {
         return false;
     }
-    
+
     /**
      * The values to be used in the add and set tests.
      * Default is two strings.
      */
-    public Object[] addSetValues() {
-        return new Object[] {"A", "B"};
+    @SuppressWarnings("unchecked")
+    public V[] addSetValues() {
+        return (V[]) new Object[] { "A", "B" };
     }
 
     //-----------------------------------------------------------------------
@@ -134,28 +116,27 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
             return;
         }
 
-        MapIterator it = makeEmptyMapIterator();
-        Map map = getMap();
+        MapIterator<K, V> it = makeEmptyIterator();
         assertEquals(false, it.hasNext());
-        
+
         // next() should throw a NoSuchElementException
         try {
             it.next();
             fail();
         } catch (NoSuchElementException ex) {}
-        
+
         // getKey() should throw an IllegalStateException
         try {
             it.getKey();
             fail();
         } catch (IllegalStateException ex) {}
-        
+
         // getValue() should throw an IllegalStateException
         try {
             it.getValue();
             fail();
         } catch (IllegalStateException ex) {}
-        
+
         if (supportsSetValue() == false) {
             // setValue() should throw an 
UnsupportedOperationException/IllegalStateException
             try {
@@ -181,21 +162,21 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
             return;
         }
 
-        MapIterator it = makeFullMapIterator();
-        Map map = getMap();
+        MapIterator<K, V> it = makeObject();
+        Map<K, V> map = getMap();
         assertEquals(true, it.hasNext());
-        
+
         assertEquals(true, it.hasNext());
-        Set set = new HashSet();
+        Set<K> set = new HashSet<K>();
         while (it.hasNext()) {
             // getKey
-            Object key = it.next();
+            K key = it.next();
             assertSame("it.next() should equals getKey()", key, it.getKey());
             assertTrue("Key must be in map",  map.containsKey(key));
             assertTrue("Key must be unique", set.add(key));
-            
+
             // getValue
-            Object value = it.getValue();
+            V value = it.getValue();
             if (isGetStructuralModify() == false) {
                 assertSame("Value must be mapped to key", map.get(key), value);
             }
@@ -204,22 +185,22 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
             verify();
         }
     }
-    
+
     //-----------------------------------------------------------------------
     public void testMapIteratorSet() {
         if (supportsFullIterator() == false) {
             return;
         }
 
-        Object newValue = addSetValues()[0];
-        Object newValue2 = (addSetValues().length == 1 ? addSetValues()[0] : 
addSetValues()[1]);
-        MapIterator it = makeFullMapIterator();
-        Map map = getMap();
-        Map confirmed = getConfirmedMap();
+        V newValue = addSetValues()[0];
+        V newValue2 = (addSetValues().length == 1 ? addSetValues()[0] : 
addSetValues()[1]);
+        MapIterator<K, V> it = makeObject();
+        Map<K, V> map = getMap();
+        Map<K, V> confirmed = getConfirmedMap();
         assertEquals(true, it.hasNext());
-        Object key = it.next();
-        Object value = it.getValue();
-        
+        K key = it.next();
+        V value = it.getValue();
+
         if (supportsSetValue() == false) {
             try {
                 it.setValue(newValue);
@@ -227,24 +208,24 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
             } catch (UnsupportedOperationException ex) {}
             return;
         }
-        Object old = it.setValue(newValue);
+        V old = it.setValue(newValue);
         confirmed.put(key, newValue);
         assertSame("Key must not change after setValue", key, it.getKey());
         assertSame("Value must be changed after setValue", newValue, 
it.getValue());
         assertSame("setValue must return old value", value, old);
         assertEquals("Map must contain key", true, map.containsKey(key));
         // test against confirmed, as map may contain value twice
-        assertEquals("Map must not contain old value", 
+        assertEquals("Map must not contain old value",
             confirmed.containsValue(old), map.containsValue(old));
         assertEquals("Map must contain new value", true, 
map.containsValue(newValue));
         verify();
-        
+
         it.setValue(newValue);  // same value - should be OK
         confirmed.put(key, newValue);
         assertSame("Key must not change after setValue", key, it.getKey());
         assertSame("Value must be changed after setValue", newValue, 
it.getValue());
         verify();
-        
+
         it.setValue(newValue2);  // new value
         confirmed.put(key, newValue2);
         assertSame("Key must not change after setValue", key, it.getKey());
@@ -254,12 +235,12 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
 
     //-----------------------------------------------------------------------
     public void testRemove() { // override
-        MapIterator it = makeFullMapIterator();
-        Map map = getMap();
-        Map confirmed = getConfirmedMap();
+        MapIterator<K, V> it = makeObject();
+        Map<K, V> map = getMap();
+        Map<K, V> confirmed = getConfirmedMap();
         assertEquals(true, it.hasNext());
-        Object key = it.next();
-        
+        K key = it.next();
+
         if (supportsRemove() == false) {
             try {
                 it.remove();
@@ -268,12 +249,12 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
             }
             return;
         }
-        
+
         it.remove();
         confirmed.remove(key);
         assertEquals(false, map.containsKey(key));
         verify();
-        
+
         try {
             it.remove();  // second remove fails
         } catch (IllegalStateException ex) {
@@ -286,19 +267,18 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
         if (supportsSetValue() == false || supportsRemove() == false) {
             return;
         }
-        Object newValue = addSetValues()[0];
-        MapIterator it = makeFullMapIterator();
-        Map map = getMap();
-        Map confirmed = getConfirmedMap();
-        
+        V newValue = addSetValues()[0];
+        MapIterator<K, V> it = makeObject();
+        Map<K, V> confirmed = getConfirmedMap();
+
         assertEquals(true, it.hasNext());
-        Object key = it.next();
-        
+        K key = it.next();
+
         it.setValue(newValue);
         it.remove();
         confirmed.remove(key);
         verify();
-        
+
         try {
             it.setValue(newValue);
             fail();
@@ -311,17 +291,16 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
         if (supportsRemove() == false) {
             return;
         }
-        MapIterator it = makeFullMapIterator();
-        Map map = getMap();
-        Map confirmed = getConfirmedMap();
-        
+        MapIterator<K, V> it = makeObject();
+        Map<K, V> confirmed = getConfirmedMap();
+
         assertEquals(true, it.hasNext());
-        Object key = it.next();
-        
+        K key = it.next();
+
         it.remove();
         confirmed.remove(key);
         verify();
-        
+
         try {
             it.getKey();
             fail();
@@ -334,17 +313,16 @@ public abstract class AbstractTestMapIterator extends 
AbstractTestIterator {
         if (supportsRemove() == false) {
             return;
         }
-        MapIterator it = makeFullMapIterator();
-        Map map = getMap();
-        Map confirmed = getConfirmedMap();
-        
+        MapIterator<K, V> it = makeObject();
+        Map<K, V> confirmed = getConfirmedMap();
+
         assertEquals(true, it.hasNext());
-        Object key = it.next();
-        
+        K key = it.next();
+
         it.remove();
         confirmed.remove(key);
         verify();
-        
+
         try {
             it.getValue();
             fail();

Reply via email to