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:47 UTC

[02/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/map/TestPredicatedSortedMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestPredicatedSortedMap.java b/src/test/org/apache/commons/collections/map/TestPredicatedSortedMap.java
index b59367f..1fa8164 100644
--- a/src/test/org/apache/commons/collections/map/TestPredicatedSortedMap.java
+++ b/src/test/org/apache/commons/collections/map/TestPredicatedSortedMap.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.
@@ -27,57 +27,54 @@ import junit.framework.Test;
 import junit.framework.TestSuite;
 
 import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.PredicateUtils;
+import org.apache.commons.collections.functors.TruePredicate;
 
 /**
- * Extension of {@link TestPredicatedMap} for exercising the 
+ * Extension of {@link TestPredicatedMap} for exercising the
  * {@link PredicatedSortedMap} implementation.
  *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Phil Steitz
  */
-public class TestPredicatedSortedMap extends AbstractTestSortedMap{
-    
-    protected static final Predicate truePredicate = PredicateUtils.truePredicate();
-    protected static final Predicate testPredicate = new Predicate() {
+public class TestPredicatedSortedMap<K, V> extends AbstractTestSortedMap<K, V> {
+
+    protected static final Predicate<Object> truePredicate = TruePredicate.truePredicate();
+
+    protected static final Predicate<Object> testPredicate = new Predicate<Object>() {
         public boolean evaluate(Object o) {
             return (o instanceof String);
         }
     };
-    
+
     public TestPredicatedSortedMap(String testName) {
         super(testName);
     }
-    
+
     public static Test suite() {
         return new TestSuite(TestPredicatedSortedMap.class);
     }
-    
+
     public static void main(String args[]) {
         String[] testCaseName = { TestPredicatedSortedMap.class.getName()};
         junit.textui.TestRunner.main(testCaseName);
     }
 
     //-----------------------------------------------------------------------
-    protected SortedMap decorateMap(SortedMap map, Predicate keyPredicate, 
-        Predicate valuePredicate) {
+    protected SortedMap<K, V> decorateMap(SortedMap<K, V> map, Predicate<? super K> keyPredicate,
+        Predicate<? super V> valuePredicate) {
         return PredicatedSortedMap.decorate(map, keyPredicate, valuePredicate);
     }
-    
-    public Map makeEmptyMap() {
-        return decorateMap(new TreeMap(), truePredicate, truePredicate);
+
+    public SortedMap<K, V> makeObject() {
+        return decorateMap(new TreeMap<K, V>(), truePredicate, truePredicate);
     }
-   
-    public Map makeTestMap() {
-        return decorateMap(new TreeMap(), testPredicate, testPredicate);
-    } 
-    
-    public SortedMap makeTestSortedMap() {
-        return decorateMap(new TreeMap(), testPredicate, testPredicate);
+
+    public SortedMap<K, V> makeTestMap() {
+        return decorateMap(new TreeMap<K, V>(), testPredicate, testPredicate);
     }
-    
+
     public boolean isSubMapViewsSerializable() {
         // TreeMap sub map views have a bug in deserialization.
         return false;
@@ -89,28 +86,30 @@ public class TestPredicatedSortedMap extends AbstractTestSortedMap{
 
     // from TestPredicatedMap
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testEntrySet() {
-        SortedMap map = makeTestSortedMap();
+        SortedMap<K, V> map = makeTestMap();
         assertTrue("returned entryset should not be null",
             map.entrySet() != null);
-        map = decorateMap(new TreeMap(), null, null);
-        map.put("oneKey", "oneValue");
+        map = decorateMap(new TreeMap<K, V>(), null, null);
+        map.put((K) "oneKey", (V) "oneValue");
         assertTrue("returned entryset should contain one entry",
-            map.entrySet().size() == 1); 
+            map.entrySet().size() == 1);
         map = decorateMap(map, null, null);
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testPut() {
-        Map map = makeTestMap();
+        Map<K, V> map = makeTestMap();
         try {
-            map.put("Hi", new Integer(3));
+            map.put((K) "Hi", (V) new Integer(3));
             fail("Illegal value should raise IllegalArgument");
         } catch (IllegalArgumentException e) {
             // expected
         }
 
         try {
-            map.put(new Integer(3), "Hi");
+            map.put((K) new Integer(3), (V) "Hi");
             fail("Illegal key should raise IllegalArgument");
         } catch (IllegalArgumentException e) {
             // expected
@@ -119,11 +118,11 @@ public class TestPredicatedSortedMap extends AbstractTestSortedMap{
         assertTrue(!map.containsKey(new Integer(3)));
         assertTrue(!map.containsValue(new Integer(3)));
 
-        Map map2 = new HashMap();
-        map2.put("A", "a");
-        map2.put("B", "b");
-        map2.put("C", "c");
-        map2.put("c", new Integer(3));
+        Map<K, V> map2 = new HashMap<K, V>();
+        map2.put((K) "A", (V) "a");
+        map2.put((K) "B", (V) "b");
+        map2.put((K) "C", (V) "c");
+        map2.put((K) "c", (V) new Integer(3));
 
         try {
             map.putAll(map2);
@@ -132,52 +131,53 @@ public class TestPredicatedSortedMap extends AbstractTestSortedMap{
             // expected
         }
 
-        map.put("E", "e");
-        Iterator iterator = map.entrySet().iterator();
+        map.put((K) "E", (V) "e");
+        Iterator<Map.Entry<K, V>> iterator = map.entrySet().iterator();
         try {
-            Map.Entry entry = (Map.Entry)iterator.next();
-            entry.setValue(new Integer(3));
+            Map.Entry<K, V> entry = iterator.next();
+            entry.setValue((V) new Integer(3));
             fail("Illegal value should raise IllegalArgument");
         } catch (IllegalArgumentException e) {
             // expected
         }
-        
-        map.put("F", "f");
+
+        map.put((K) "F", (V) "f");
         iterator = map.entrySet().iterator();
-        Map.Entry entry = (Map.Entry)iterator.next();
-        entry.setValue("x");
-        
+        Map.Entry<K, V> entry = iterator.next();
+        entry.setValue((V) "x");
+
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testSortOrder() {
-        SortedMap map = makeTestSortedMap();
-        map.put("A",  "a");
-        map.put("B", "b");
+        SortedMap<K, V> map = makeTestMap();
+        map.put((K) "A",  (V) "a");
+        map.put((K) "B", (V) "b");
         try {
-            map.put(null, "c");
+            map.put(null, (V) "c");
             fail("Null key should raise IllegalArgument");
         } catch (IllegalArgumentException e) {
             // expected
         }
-        map.put("C", "c");
+        map.put((K) "C", (V) "c");
         try {
-            map.put("D", null);
+            map.put((K) "D", null);
             fail("Null value should raise IllegalArgument");
         } catch (IllegalArgumentException e) {
             // expected
         }
         assertEquals("First key should be A", map.firstKey(), "A");
         assertEquals("Last key should be C", map.lastKey(), "C");
-        assertEquals("First key in tail map should be B", 
-            map.tailMap("B").firstKey(), "B");
-        assertEquals("Last key in head map should be B", 
-            map.headMap("C").lastKey(), "B");
+        assertEquals("First key in tail map should be B",
+            map.tailMap((K) "B").firstKey(), "B");
+        assertEquals("Last key in head map should be B",
+            map.headMap((K) "C").lastKey(), "B");
         assertEquals("Last key in submap should be B",
-           map.subMap("A","C").lastKey(), "B");
-        
-        Comparator c = map.comparator();
-        assertTrue("natural order, so comparator should be null", 
+           map.subMap((K) "A",(K) "C").lastKey(), "B");
+
+        Comparator<? super K> c = map.comparator();
+        assertTrue("natural order, so comparator should be null",
             c == null);
     }
 

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestReferenceIdentityMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestReferenceIdentityMap.java b/src/test/org/apache/commons/collections/map/TestReferenceIdentityMap.java
index 6bb4432..421950a 100644
--- a/src/test/org/apache/commons/collections/map/TestReferenceIdentityMap.java
+++ b/src/test/org/apache/commons/collections/map/TestReferenceIdentityMap.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,17 +24,18 @@ import junit.framework.Test;
 
 import org.apache.commons.collections.BulkTest;
 import org.apache.commons.collections.IterableMap;
+import org.apache.commons.collections.map.AbstractReferenceMap.ReferenceStrength;
 
 /**
- * Tests for ReferenceIdentityMap. 
- * 
+ * Tests for ReferenceIdentityMap.
+ *
  * @version $Revision$
  *
  * @author Paul Jack
  * @author Stephen Colebourne
  * @author Guilhem Lavaux
  */
-public class TestReferenceIdentityMap extends AbstractTestIterableMap {
+public class TestReferenceIdentityMap<K, V> extends AbstractTestIterableMap<K, V> {
 
     private static final Integer I1A = new Integer(1);
     private static final Integer I1B = new Integer(1);
@@ -54,15 +55,15 @@ public class TestReferenceIdentityMap extends AbstractTestIterableMap {
         junit.textui.TestRunner.main(testCaseName);
     }
 
-    public Map makeEmptyMap() {
-        ReferenceIdentityMap map = new ReferenceIdentityMap(ReferenceIdentityMap.WEAK, ReferenceIdentityMap.WEAK);
-        return map;
+    public ReferenceIdentityMap<K, V> makeObject() {
+        return new ReferenceIdentityMap<K, V>(ReferenceStrength.WEAK, ReferenceStrength.WEAK);
     }
-    
-    public Map makeConfirmedMap() {
+
+    public Map<K, V> makeConfirmedMap() {
         // Testing against another [collections] class generally isn't a good idea,
-        // but the alternative is a JDK1.4 dependency in the tests
-        return new IdentityMap();
+        // but the closest alternative is IdentityHashMap, which propagates reference-equality down to keySet and values.
+        // arguably ReferenceIdentityMap should do the same but that's a later discussion.
+        return new IdentityMap<K, V>();
     }
 
     public boolean isAllowNullKey() {
@@ -78,11 +79,12 @@ public class TestReferenceIdentityMap extends AbstractTestIterableMap {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testBasics() {
-        IterableMap map = new ReferenceIdentityMap(ReferenceIdentityMap.HARD, ReferenceIdentityMap.HARD);
+        IterableMap<K, V> map = new ReferenceIdentityMap<K, V>(ReferenceStrength.HARD, ReferenceStrength.HARD);
         assertEquals(0, map.size());
-        
-        map.put(I1A, I2A);
+
+        map.put((K) I1A, (V) I2A);
         assertEquals(1, map.size());
         assertSame(I2A, map.get(I1A));
         assertSame(null, map.get(I1B));
@@ -90,8 +92,8 @@ public class TestReferenceIdentityMap extends AbstractTestIterableMap {
         assertEquals(false, map.containsKey(I1B));
         assertEquals(true, map.containsValue(I2A));
         assertEquals(false, map.containsValue(I2B));
-        
-        map.put(I1A, I2B);
+
+        map.put((K) I1A, (V) I2B);
         assertEquals(1, map.size());
         assertSame(I2B, map.get(I1A));
         assertSame(null, map.get(I1B));
@@ -99,8 +101,8 @@ public class TestReferenceIdentityMap extends AbstractTestIterableMap {
         assertEquals(false, map.containsKey(I1B));
         assertEquals(false, map.containsValue(I2A));
         assertEquals(true, map.containsValue(I2B));
-        
-        map.put(I1B, I2B);
+
+        map.put((K) I1B, (V) I2B);
         assertEquals(2, map.size());
         assertSame(I2B, map.get(I1A));
         assertSame(I2B, map.get(I1B));
@@ -109,45 +111,46 @@ public class TestReferenceIdentityMap extends AbstractTestIterableMap {
         assertEquals(false, map.containsValue(I2A));
         assertEquals(true, map.containsValue(I2B));
     }
-    
+
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testHashEntry() {
-        IterableMap map = new ReferenceIdentityMap(ReferenceIdentityMap.HARD, ReferenceIdentityMap.HARD);
-        
-        map.put(I1A, I2A);
-        map.put(I1B, I2A);
-        
-        Map.Entry entry1 = (Map.Entry) map.entrySet().iterator().next();
-        Iterator it = map.entrySet().iterator();
-        Map.Entry entry2 = (Map.Entry) it.next();
-        Map.Entry entry3 = (Map.Entry) it.next();
-        
+        IterableMap<K, V> map = new ReferenceIdentityMap<K, V>(ReferenceStrength.HARD, ReferenceStrength.HARD);
+
+        map.put((K) I1A, (V) I2A);
+        map.put((K) I1B, (V) I2A);
+
+        Map.Entry<K, V> entry1 = map.entrySet().iterator().next();
+        Iterator<Map.Entry<K, V>> it = map.entrySet().iterator();
+        Map.Entry<K, V> entry2 = it.next();
+        Map.Entry<K, V> entry3 = it.next();
+
         assertEquals(true, entry1.equals(entry2));
         assertEquals(true, entry2.equals(entry1));
         assertEquals(false, entry1.equals(entry3));
     }
-    
-    
+
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testNullHandling() {
         resetFull();
-        assertEquals(null, map.get(null));
-        assertEquals(false, map.containsKey(null));
-        assertEquals(false, map.containsValue(null));
-        assertEquals(null, map.remove(null));
-        assertEquals(false, map.entrySet().contains(null));
-        assertEquals(false, map.keySet().contains(null));
-        assertEquals(false, map.values().contains(null));
+        assertEquals(null, getMap().get(null));
+        assertEquals(false, getMap().containsKey(null));
+        assertEquals(false, getMap().containsValue(null));
+        assertEquals(null, getMap().remove(null));
+        assertEquals(false, getMap().entrySet().contains(null));
+        assertEquals(false, getMap().keySet().contains(null));
+        assertEquals(false, getMap().values().contains(null));
         try {
-            map.put(null, null);
+            getMap().put(null, null);
             fail();
         } catch (NullPointerException ex) {}
         try {
-            map.put(new Object(), null);
+            getMap().put((K) new Object(), null);
             fail();
         } catch (NullPointerException ex) {}
         try {
-            map.put(null, new Object());
+            getMap().put(null, (V) new Object());
             fail();
         } catch (NullPointerException ex) {}
     }
@@ -263,19 +266,20 @@ public class TestReferenceIdentityMap extends AbstractTestIterableMap {
     }
 */
 
-    WeakReference keyReference;
-    WeakReference valueReference;
-
-    public Map buildRefMap() {
-        Object key = new Object();
-        Object value = new Object();
-        
-        keyReference = new WeakReference(key);
-        valueReference = new WeakReference(value);
-        
-        Map testMap = new ReferenceIdentityMap(ReferenceMap.WEAK, ReferenceMap.HARD, true);
+    WeakReference<K> keyReference;
+    WeakReference<V> valueReference;
+
+    @SuppressWarnings("unchecked")
+    private Map<K, V> buildRefMap() {
+        K key = (K) new Object();
+        V value = (V) new Object();
+
+        keyReference = new WeakReference<K>(key);
+        valueReference = new WeakReference<V>(value);
+
+        Map<K, V> testMap = new ReferenceIdentityMap<K, V>(ReferenceStrength.WEAK, ReferenceStrength.HARD, true);
         testMap.put(key, value);
- 
+
         assertEquals("In map", value, testMap.get(key));
         assertNotNull("Weak reference released early (1)", keyReference.get());
         assertNotNull("Weak reference released early (2)", valueReference.get());
@@ -285,29 +289,31 @@ public class TestReferenceIdentityMap extends AbstractTestIterableMap {
     /** Tests whether purge values setting works */
     public void testPurgeValues() throws Exception {
         // many thanks to Juozas Baliuka for suggesting this method
-        Map testMap = buildRefMap();
-        
+        Map<K, V> testMap = buildRefMap();
+
         int iterations = 0;
         int bytz = 2;
-        while(true) {
+        while (true) {
             System.gc();
-            if(iterations++ > 50){
+            if (iterations++ > 50) {
                 fail("Max iterations reached before resource released.");
             }
             testMap.isEmpty();
-            if( 
+            if (
                 keyReference.get() == null &&
                 valueReference.get() == null) {
                 break;
-                
+
             } else {
                 // create garbage:
+                @SuppressWarnings("unused")
                 byte[] b =  new byte[bytz];
                 bytz = bytz * 2;
             }
         }
     }
 
+    @SuppressWarnings("unused")
     private static void gc() {
         try {
             // trigger GC

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestReferenceMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestReferenceMap.java b/src/test/org/apache/commons/collections/map/TestReferenceMap.java
index fbdae7b..d4c05d2 100644
--- a/src/test/org/apache/commons/collections/map/TestReferenceMap.java
+++ b/src/test/org/apache/commons/collections/map/TestReferenceMap.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.
@@ -22,16 +22,17 @@ import java.util.Map;
 import junit.framework.Test;
 
 import org.apache.commons.collections.BulkTest;
+import org.apache.commons.collections.map.AbstractReferenceMap.ReferenceStrength;
 
 /**
- * Tests for ReferenceMap. 
- * 
+ * Tests for ReferenceMap.
+ *
  * @version $Revision$ $Date$
  *
  * @author Paul Jack
  * @author Guilhem Lavaux
  */
-public class TestReferenceMap extends AbstractTestIterableMap {
+public class TestReferenceMap<K, V> extends AbstractTestIterableMap<K, V> {
 
     public TestReferenceMap(String testName) {
         super(testName);
@@ -46,9 +47,8 @@ public class TestReferenceMap extends AbstractTestIterableMap {
         junit.textui.TestRunner.main(testCaseName);
     }
 
-    public Map makeEmptyMap() {
-        ReferenceMap map = new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK);
-        return map;
+    public ReferenceMap<K, V> makeObject() {
+        return new ReferenceMap<K, V>(ReferenceStrength.WEAK, ReferenceStrength.WEAK);
     }
 
     public boolean isAllowNullKey() {
@@ -64,6 +64,7 @@ public class TestReferenceMap extends AbstractTestIterableMap {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testNullHandling() {
         resetFull();
         assertEquals(null, map.get(null));
@@ -78,11 +79,11 @@ public class TestReferenceMap extends AbstractTestIterableMap {
             fail();
         } catch (NullPointerException ex) {}
         try {
-            map.put(new Object(), null);
+            map.put((K) new Object(), null);
             fail();
         } catch (NullPointerException ex) {}
         try {
-            map.put(null, new Object());
+            map.put(null, (V) new Object());
             fail();
         } catch (NullPointerException ex) {}
     }
@@ -198,19 +199,20 @@ public class TestReferenceMap extends AbstractTestIterableMap {
     }
 */
 
-    WeakReference keyReference;
-    WeakReference valueReference;
-
-    public Map buildRefMap() {
-        Object key = new Object();
-        Object value = new Object();
-        
-        keyReference = new WeakReference(key);
-        valueReference = new WeakReference(value);
-        
-        Map testMap = new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.HARD, true);
+    WeakReference<K> keyReference;
+    WeakReference<V> valueReference;
+
+    @SuppressWarnings("unchecked")
+    public Map<K, V> buildRefMap() {
+        K key = (K) new Object();
+        V value = (V) new Object();
+
+        keyReference = new WeakReference<K>(key);
+        valueReference = new WeakReference<V>(value);
+
+        Map<K, V> testMap = new ReferenceMap<K, V>(ReferenceStrength.WEAK, ReferenceStrength.HARD, true);
         testMap.put(key, value);
- 
+
         assertEquals("In map", value, testMap.get(key));
         assertNotNull("Weak reference released early (1)", keyReference.get());
         assertNotNull("Weak reference released early (2)", valueReference.get());
@@ -220,29 +222,29 @@ public class TestReferenceMap extends AbstractTestIterableMap {
     /** Tests whether purge values setting works */
     public void testPurgeValues() throws Exception {
         // many thanks to Juozas Baliuka for suggesting this method
-        Map testMap = buildRefMap();
+        Map<K, V> testMap = buildRefMap();
 
         int iterations = 0;
         int bytz = 2;
-        while(true) {
+        while (true) {
             System.gc();
-            if(iterations++ > 50){
+            if (iterations++ > 50) {
                 fail("Max iterations reached before resource released.");
             }
             testMap.isEmpty();
-            if( 
-                keyReference.get() == null &&
-                valueReference.get() == null) {
+            if (keyReference.get() == null && valueReference.get() == null) {
                 break;
-                
+
             } else {
                 // create garbage:
-                byte[] b =  new byte[bytz];
+                @SuppressWarnings("unused")
+                byte[] b = new byte[bytz];
                 bytz = bytz * 2;
             }
         }
     }
 
+    @SuppressWarnings("unused")
     private static void gc() {
         try {
             // trigger GC

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestSingletonMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestSingletonMap.java b/src/test/org/apache/commons/collections/map/TestSingletonMap.java
index 26134a8..575f1bc 100644
--- a/src/test/org/apache/commons/collections/map/TestSingletonMap.java
+++ b/src/test/org/apache/commons/collections/map/TestSingletonMap.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.map;
 
 import java.util.HashMap;
-import java.util.Map;
 
 import junit.framework.Test;
 import junit.textui.TestRunner;
@@ -25,21 +24,21 @@ import junit.textui.TestRunner;
 import org.apache.commons.collections.BoundedMap;
 import org.apache.commons.collections.BulkTest;
 import org.apache.commons.collections.KeyValue;
+import org.apache.commons.collections.OrderedMap;
 
 /**
  * JUnit tests.
- * 
+ *
  * @version $Revision$ $Date$
- * 
+ *
  * @author Stephen Colebourne
  */
-public class TestSingletonMap extends AbstractTestOrderedMap {
+public class TestSingletonMap<K, V> extends AbstractTestOrderedMap<K, V> {
 
     private static final Integer ONE = new Integer(1);
     private static final Integer TWO = new Integer(2);
     private static final String TEN = "10";
-    private static final String TWENTY = "20";
-        
+
     public TestSingletonMap(String testName) {
         super(testName);
     }
@@ -47,18 +46,18 @@ public class TestSingletonMap extends AbstractTestOrderedMap {
     public static void main(String[] args) {
         TestRunner.run(suite());
     }
-    
+
     public static Test suite() {
         return BulkTest.makeSuite(TestSingletonMap.class);
     }
 
     //-----------------------------------------------------------------------
-    public Map makeEmptyMap() {
+    public OrderedMap<K, V> makeObject() {
         // need an empty singleton map, but thats not possible
         // use a ridiculous fake instead to make the tests pass
-        return UnmodifiableOrderedMap.decorate(ListOrderedMap.decorate(new HashMap()));
+        return UnmodifiableOrderedMap.decorate(ListOrderedMap.decorate(new HashMap<K, V>()));
     }
-    
+
     public String[] ignoredTests() {
         // the ridiculous map above still doesn't pass these tests
         // but its not relevant, so we ignore them
@@ -68,9 +67,9 @@ public class TestSingletonMap extends AbstractTestOrderedMap {
         };
     }
 
-
-    public Map makeFullMap() {
-        return new SingletonMap(ONE, TWO);
+    @SuppressWarnings("unchecked")
+    public SingletonMap<K, V> makeFullMap() {
+        return new SingletonMap<K, V>((K) ONE, (V) TWO);
     }
 
     public boolean isPutAddSupported() {
@@ -81,30 +80,33 @@ public class TestSingletonMap extends AbstractTestOrderedMap {
         return false;
     }
 
-    public Object[] getSampleKeys() {
-        return new Object[] {ONE};
+    @SuppressWarnings("unchecked")
+    public K[] getSampleKeys() {
+        return (K[]) new Object[] { ONE };
     }
 
-    public Object[] getSampleValues() {
-        return new Object[] {TWO};
+    @SuppressWarnings("unchecked")
+    public V[] getSampleValues() {
+        return (V[]) new Object[] { TWO };
     }
 
-    public Object[] getNewSampleValues() {
-        return new Object[] {TEN};
+    @SuppressWarnings("unchecked")
+    public V[] getNewSampleValues() {
+        return (V[]) new Object[] { TEN };
     }
 
     //-----------------------------------------------------------------------
     public void testClone() {
-        SingletonMap map = new SingletonMap(ONE, TWO);
+        SingletonMap<K, V> map = makeFullMap();
         assertEquals(1, map.size());
-        SingletonMap cloned = (SingletonMap) map.clone();
+        SingletonMap<K, V> cloned = map.clone();
         assertEquals(1, cloned.size());
         assertEquals(true, cloned.containsKey(ONE));
         assertEquals(true, cloned.containsValue(TWO));
     }
 
     public void testKeyValue() {
-        SingletonMap map = new SingletonMap(ONE, TWO);
+        SingletonMap<K, V> map = makeFullMap();
         assertEquals(1, map.size());
         assertEquals(ONE, map.getKey());
         assertEquals(TWO, map.getValue());
@@ -112,7 +114,7 @@ public class TestSingletonMap extends AbstractTestOrderedMap {
     }
 
     public void testBoundedMap() {
-        SingletonMap map = new SingletonMap(ONE, TWO);
+        SingletonMap<K, V> map = makeFullMap();
         assertEquals(1, map.size());
         assertEquals(true, map.isFull());
         assertEquals(1, map.maxSize());
@@ -123,16 +125,16 @@ public class TestSingletonMap extends AbstractTestOrderedMap {
 //    public BulkTest bulkTestMapIterator() {
 //        return new TestFlatMapIterator();
 //    }
-//    
+//
 //    public class TestFlatMapIterator extends AbstractTestOrderedMapIterator {
 //        public TestFlatMapIterator() {
 //            super("TestFlatMapIterator");
 //        }
-//        
+//
 //        public Object[] addSetValues() {
 //            return TestSingletonMap.this.getNewSampleValues();
 //        }
-//        
+//
 //        public boolean supportsRemove() {
 //            return TestSingletonMap.this.isRemoveSupported();
 //        }
@@ -150,23 +152,23 @@ public class TestSingletonMap extends AbstractTestOrderedMap {
 //            resetFull();
 //            return ((Flat3Map) TestSingletonMap.this.map).mapIterator();
 //        }
-//        
+//
 //        public Map getMap() {
 //            // assumes makeFullMapIterator() called first
 //            return TestSingletonMap.this.map;
 //        }
-//        
+//
 //        public Map getConfirmedMap() {
 //            // assumes makeFullMapIterator() called first
 //            return TestSingletonMap.this.confirmed;
 //        }
-//        
+//
 //        public void verify() {
 //            super.verify();
 //            TestSingletonMap.this.verify();
 //        }
 //    }
-    
+
     public String getCompatibilityVersion() {
         return "3.1";
     }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestStaticBucketMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestStaticBucketMap.java b/src/test/org/apache/commons/collections/map/TestStaticBucketMap.java
index ac96d87..a9c1c70 100644
--- a/src/test/org/apache/commons/collections/map/TestStaticBucketMap.java
+++ b/src/test/org/apache/commons/collections/map/TestStaticBucketMap.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.
@@ -16,8 +16,6 @@
  */
 package org.apache.commons.collections.map;
 
-import java.util.Map;
-
 import junit.framework.Test;
 
 import org.apache.commons.collections.BulkTest;
@@ -25,12 +23,12 @@ import org.apache.commons.collections.BulkTest;
 /**
  * Unit tests.
  * {@link StaticBucketMap}.
- * 
+ *
  * @version $Revision$ $Date$
- * 
+ *
  * @author Michael A. Smith
  */
-public class TestStaticBucketMap extends AbstractTestMap {
+public class TestStaticBucketMap<K, V> extends AbstractTestMap<K, V> {
 
     public TestStaticBucketMap(String name) {
         super(name);
@@ -45,8 +43,8 @@ public class TestStaticBucketMap extends AbstractTestMap {
         junit.textui.TestRunner.main(testCaseName);
     }
 
-    public Map makeEmptyMap() {
-        return new StaticBucketMap(30);
+    public StaticBucketMap<K, V> makeObject() {
+        return new StaticBucketMap<K, V>(30);
     }
 
     public String[] ignoredTests() {
@@ -60,9 +58,10 @@ public class TestStaticBucketMap extends AbstractTestMap {
     }
 
     // Bugzilla 37567
+    @SuppressWarnings("unchecked")
     public void test_get_nullMatchesIncorrectly() {
-        StaticBucketMap map = new StaticBucketMap(17);
-        map.put(null, "A");
+        StaticBucketMap<K, V> map = new StaticBucketMap<K, V>(17);
+        map.put(null, (V) "A");
         assertEquals("A", map.get(null));
         // loop so we find a string that is in the same bucket as the null
         for (int i = 'A'; i <= 'Z'; i++) {
@@ -71,9 +70,10 @@ public class TestStaticBucketMap extends AbstractTestMap {
         }
     }
 
+    @SuppressWarnings("unchecked")
     public void test_containsKey_nullMatchesIncorrectly() {
-        StaticBucketMap map = new StaticBucketMap(17);
-        map.put(null, "A");
+        StaticBucketMap<K, V> map = new StaticBucketMap<K, V>(17);
+        map.put(null, (V) "A");
         assertEquals(true, map.containsKey(null));
         // loop so we find a string that is in the same bucket as the null
         for (int i = 'A'; i <= 'Z'; i++) {
@@ -82,9 +82,10 @@ public class TestStaticBucketMap extends AbstractTestMap {
         }
     }
 
+    @SuppressWarnings("unchecked")
     public void test_containsValue_nullMatchesIncorrectly() {
-        StaticBucketMap map = new StaticBucketMap(17);
-        map.put("A", null);
+        StaticBucketMap<K, V> map = new StaticBucketMap<K, V>(17);
+        map.put((K) "A", null);
         assertEquals(true, map.containsValue(null));
         // loop so we find a string that is in the same bucket as the null
         for (int i = 'A'; i <= 'Z'; i++) {

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestTransformedMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestTransformedMap.java b/src/test/org/apache/commons/collections/map/TestTransformedMap.java
index 59e93ea..15f8a18 100644
--- a/src/test/org/apache/commons/collections/map/TestTransformedMap.java
+++ b/src/test/org/apache/commons/collections/map/TestTransformedMap.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.
@@ -23,6 +23,7 @@ import java.util.Set;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.apache.commons.collections.Transformer;
 import org.apache.commons.collections.TransformerUtils;
 import org.apache.commons.collections.collection.TestTransformedCollection;
 
@@ -32,11 +33,11 @@ import org.apache.commons.collections.collection.TestTransformedCollection;
  *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Stephen Colebourne
  */
-public class TestTransformedMap extends AbstractTestMap {
-    
+public class TestTransformedMap<K, V> extends AbstractTestMap<K, V> {
+
     public TestTransformedMap(String testName) {
         super(testName);
     }
@@ -51,32 +52,38 @@ public class TestTransformedMap extends AbstractTestMap {
     }
 
     //-----------------------------------------------------------------------
-    public Map makeEmptyMap() {
-        return TransformedMap.decorate(new HashMap(), TransformerUtils.nopTransformer(), TransformerUtils.nopTransformer());
+    public Map<K, V> makeObject() {
+        return TransformedMap.decorate(new HashMap<K, V>(), TransformerUtils.<K> nopTransformer(),
+                TransformerUtils.<V> nopTransformer());
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testTransformedMap() {
-        Object[] els = new Object[] {"1", "3", "5", "7", "2", "4", "6"};
+        Object[] els = new Object[] { "1", "3", "5", "7", "2", "4", "6" };
 
-        Map map = TransformedMap.decorate(new HashMap(), TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER, null);
+        Map<K, V> map = TransformedMap
+                .decorate(
+                        new HashMap<K, V>(),
+                        (Transformer<? super K, ? extends K>) TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER,
+                        null);
         assertEquals(0, map.size());
         for (int i = 0; i < els.length; i++) {
-            map.put(els[i], els[i]);
+            map.put((K) els[i], (V) els[i]);
             assertEquals(i + 1, map.size());
             assertEquals(true, map.containsKey(new Integer((String) els[i])));
             assertEquals(false, map.containsKey(els[i]));
             assertEquals(true, map.containsValue(els[i]));
             assertEquals(els[i], map.get(new Integer((String) els[i])));
         }
-        
+
         assertEquals(null, map.remove(els[0]));
         assertEquals(els[0], map.remove(new Integer((String) els[0])));
-        
+
         map = TransformedMap.decorate(new HashMap(), null, TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
         assertEquals(0, map.size());
         for (int i = 0; i < els.length; i++) {
-            map.put(els[i], els[i]);
+            map.put((K) els[i], (V) els[i]);
             assertEquals(i + 1, map.size());
             assertEquals(true, map.containsValue(new Integer((String) els[i])));
             assertEquals(false, map.containsValue(els[i]));
@@ -85,13 +92,13 @@ public class TestTransformedMap extends AbstractTestMap {
         }
 
         assertEquals(new Integer((String) els[0]), map.remove(els[0]));
-        
+
         Set entrySet = map.entrySet();
         Map.Entry[] array = (Map.Entry[]) entrySet.toArray(new Map.Entry[0]);
         array[0].setValue("66");
         assertEquals(new Integer(66), array[0].getValue());
         assertEquals(new Integer(66), map.get(array[0].getKey()));
-        
+
         Map.Entry entry = (Map.Entry) entrySet.iterator().next();
         entry.setValue("88");
         assertEquals(new Integer(88), entry.getValue());
@@ -99,33 +106,43 @@ public class TestTransformedMap extends AbstractTestMap {
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testFactory_Decorate() {
-        Map base = new HashMap();
-        base.put("A", "1");
-        base.put("B", "2");
-        base.put("C", "3");
-        
-        Map trans = TransformedMap.decorate(base, null, TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
+        Map<K, V> base = new HashMap<K, V>();
+        base.put((K) "A", (V) "1");
+        base.put((K) "B", (V) "2");
+        base.put((K) "C", (V) "3");
+
+        Map<K, V> trans = TransformedMap
+                .decorate(
+                        base,
+                        null,
+                        (Transformer<? super V, ? extends V>) TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
         assertEquals(3, trans.size());
         assertEquals("1", trans.get("A"));
         assertEquals("2", trans.get("B"));
         assertEquals("3", trans.get("C"));
-        trans.put("D", "4");
+        trans.put((K) "D", (V) "4");
         assertEquals(new Integer(4), trans.get("D"));
     }
 
+    @SuppressWarnings("unchecked")
     public void testFactory_decorateTransform() {
-        Map base = new HashMap();
-        base.put("A", "1");
-        base.put("B", "2");
-        base.put("C", "3");
-        
-        Map trans = TransformedMap.decorateTransform(base, null, TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
+        Map<K, V> base = new HashMap<K, V>();
+        base.put((K) "A", (V) "1");
+        base.put((K) "B", (V) "2");
+        base.put((K) "C", (V) "3");
+
+        Map<K, V> trans = TransformedMap
+                .decorateTransform(
+                        base,
+                        null,
+                        (Transformer<? super V, ? extends V>) TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
         assertEquals(3, trans.size());
         assertEquals(new Integer(1), trans.get("A"));
         assertEquals(new Integer(2), trans.get("B"));
         assertEquals(new Integer(3), trans.get("C"));
-        trans.put("D", "4");
+        trans.put((K) "D", (V) "4");
         assertEquals(new Integer(4), trans.get("D"));
     }
 

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestTransformedSortedMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestTransformedSortedMap.java b/src/test/org/apache/commons/collections/map/TestTransformedSortedMap.java
index 4749c3c..0d52348 100644
--- a/src/test/org/apache/commons/collections/map/TestTransformedSortedMap.java
+++ b/src/test/org/apache/commons/collections/map/TestTransformedSortedMap.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,6 +24,7 @@ import java.util.TreeMap;
 import junit.framework.Test;
 
 import org.apache.commons.collections.BulkTest;
+import org.apache.commons.collections.Transformer;
 import org.apache.commons.collections.TransformerUtils;
 import org.apache.commons.collections.collection.TestTransformedCollection;
 
@@ -33,11 +34,11 @@ import org.apache.commons.collections.collection.TestTransformedCollection;
  *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Stephen Colebourne
  */
-public class TestTransformedSortedMap extends AbstractTestSortedMap {
-    
+public class TestTransformedSortedMap<K, V> extends AbstractTestSortedMap<K, V> {
+
     public TestTransformedSortedMap(String testName) {
         super(testName);
     }
@@ -52,8 +53,11 @@ public class TestTransformedSortedMap extends AbstractTestSortedMap {
     }
 
     //-----------------------------------------------------------------------
-    public Map makeEmptyMap() {
-        return TransformedSortedMap.decorate(new TreeMap(), TransformerUtils.nopTransformer(), TransformerUtils.nopTransformer());
+    @SuppressWarnings("unchecked")
+    public SortedMap<K, V> makeObject() {
+        return TransformedSortedMap.decorate(new TreeMap<K, V>(),
+                (Transformer<? super K, ? extends K>) TransformerUtils.nopTransformer(),
+                (Transformer<? super V, ? extends V>) TransformerUtils.nopTransformer());
     }
 
     public boolean isSubMapViewsSerializable() {
@@ -61,14 +65,19 @@ public class TestTransformedSortedMap extends AbstractTestSortedMap {
         return false;
     }
 
-    //-----------------------------------------------------------------------    
+    //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testTransformedMap() {
-        Object[] els = new Object[] {"1", "3", "5", "7", "2", "4", "6"};
+        Object[] els = new Object[] { "1", "3", "5", "7", "2", "4", "6" };
 
-        Map map = TransformedSortedMap.decorate(new TreeMap(), TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER, null);
+        SortedMap<K, V> map = TransformedSortedMap
+                .decorate(
+                        new TreeMap<K, V>(),
+                        (Transformer<? super K, ? extends K>) TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER,
+                        null);
         assertEquals(0, map.size());
         for (int i = 0; i < els.length; i++) {
-            map.put(els[i], els[i]);
+            map.put((K) els[i], (V) els[i]);
             assertEquals(i + 1, map.size());
             assertEquals(true, map.containsKey(new Integer((String) els[i])));
             try {
@@ -78,17 +87,21 @@ public class TestTransformedSortedMap extends AbstractTestSortedMap {
             assertEquals(true, map.containsValue(els[i]));
             assertEquals(els[i], map.get(new Integer((String) els[i])));
         }
-        
+
         try {
             map.remove(els[0]);
             fail();
         } catch (ClassCastException ex) {}
         assertEquals(els[0], map.remove(new Integer((String) els[0])));
-        
-        map = TransformedSortedMap.decorate(new TreeMap(), null, TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
+
+        map = TransformedSortedMap
+                .decorate(
+                        new TreeMap<K, V>(),
+                        null,
+                        (Transformer<? super V, ? extends V>) TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
         assertEquals(0, map.size());
         for (int i = 0; i < els.length; i++) {
-            map.put(els[i], els[i]);
+            map.put((K) els[i], (V) els[i]);
             assertEquals(i + 1, map.size());
             assertEquals(true, map.containsValue(new Integer((String) els[i])));
             assertEquals(false, map.containsValue(els[i]));
@@ -97,47 +110,57 @@ public class TestTransformedSortedMap extends AbstractTestSortedMap {
         }
 
         assertEquals(new Integer((String) els[0]), map.remove(els[0]));
-        
-        Set entrySet = map.entrySet();
-        Map.Entry[] array = (Map.Entry[]) entrySet.toArray(new Map.Entry[0]);
-        array[0].setValue("66");
+
+        Set<Map.Entry<K, V>> entrySet = map.entrySet();
+        Map.Entry<K, V>[] array = (Map.Entry<K, V>[]) entrySet.toArray(new Map.Entry[0]);
+        array[0].setValue((V) "66");
         assertEquals(new Integer(66), array[0].getValue());
         assertEquals(new Integer(66), map.get(array[0].getKey()));
-        
-        Map.Entry entry = (Map.Entry) entrySet.iterator().next();
-        entry.setValue("88");
+
+        Map.Entry<K, V> entry = entrySet.iterator().next();
+        entry.setValue((V) "88");
         assertEquals(new Integer(88), entry.getValue());
         assertEquals(new Integer(88), map.get(entry.getKey()));
     }
 
     //-----------------------------------------------------------------------
+    @SuppressWarnings("unchecked")
     public void testFactory_Decorate() {
-        SortedMap base = new TreeMap();
-        base.put("A", "1");
-        base.put("B", "2");
-        base.put("C", "3");
-        
-        SortedMap trans = TransformedSortedMap.decorate(base, null, TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
+        SortedMap<K, V> base = new TreeMap<K, V>();
+        base.put((K) "A", (V) "1");
+        base.put((K) "B", (V) "2");
+        base.put((K) "C", (V) "3");
+
+        SortedMap<K, V> trans = TransformedSortedMap
+                .decorate(
+                        base,
+                        null,
+                        (Transformer<? super V, ? extends V>) TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
         assertEquals(3, trans.size());
         assertEquals("1", trans.get("A"));
         assertEquals("2", trans.get("B"));
         assertEquals("3", trans.get("C"));
-        trans.put("D", "4");
+        trans.put((K) "D", (V) "4");
         assertEquals(new Integer(4), trans.get("D"));
     }
 
+    @SuppressWarnings("unchecked")
     public void testFactory_decorateTransform() {
-        SortedMap base = new TreeMap();
-        base.put("A", "1");
-        base.put("B", "2");
-        base.put("C", "3");
-        
-        SortedMap trans = TransformedSortedMap.decorateTransform(base, null, TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
+        SortedMap<K, V> base = new TreeMap<K, V>();
+        base.put((K) "A", (V) "1");
+        base.put((K) "B", (V) "2");
+        base.put((K) "C", (V) "3");
+
+        SortedMap<K, V> trans = TransformedSortedMap
+                .decorateTransform(
+                        base,
+                        null,
+                        (Transformer<? super V, ? extends V>) TestTransformedCollection.STRING_TO_INTEGER_TRANSFORMER);
         assertEquals(3, trans.size());
         assertEquals(new Integer(1), trans.get("A"));
         assertEquals(new Integer(2), trans.get("B"));
         assertEquals(new Integer(3), trans.get("C"));
-        trans.put("D", "4");
+        trans.put((K) "D", (V) "4");
         assertEquals(new Integer(4), trans.get("D"));
     }
 

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestUnmodifiableMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestUnmodifiableMap.java b/src/test/org/apache/commons/collections/map/TestUnmodifiableMap.java
index 949a079..9eb2b8c 100644
--- a/src/test/org/apache/commons/collections/map/TestUnmodifiableMap.java
+++ b/src/test/org/apache/commons/collections/map/TestUnmodifiableMap.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.
@@ -22,66 +22,67 @@ import java.util.Map;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.apache.commons.collections.IterableMap;
 import org.apache.commons.collections.Unmodifiable;
 
 /**
- * Extension of {@link AbstractTestMap} for exercising the 
+ * Extension of {@link AbstractTestMap} for exercising the
  * {@link UnmodifiableMap} implementation.
  *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Phil Steitz
  */
-public class TestUnmodifiableMap extends AbstractTestIterableMap{
-    
+public class TestUnmodifiableMap<K, V> extends AbstractTestIterableMap<K, V> {
+
     public TestUnmodifiableMap(String testName) {
         super(testName);
     }
-    
+
     public static Test suite() {
         return new TestSuite(TestUnmodifiableMap.class);
     }
-    
+
     public static void main(String args[]) {
         String[] testCaseName = { TestUnmodifiableMap.class.getName()};
         junit.textui.TestRunner.main(testCaseName);
     }
-    
+
     //-------------------------------------------------------------------
-    
-    public Map makeEmptyMap() {
-        return UnmodifiableMap.decorate(new HashMap());
+
+    public IterableMap<K, V> makeObject() {
+        return (IterableMap<K, V>) UnmodifiableMap.decorate(new HashMap<K, V>());
     }
-    
+
     public boolean isPutChangeSupported() {
         return false;
     }
-    
+
     public boolean isPutAddSupported() {
         return false;
     }
-    
+
     public boolean isRemoveSupported() {
         return false;
     }
-    
-    public Map makeFullMap() {
-        Map m = new HashMap();
+
+    public IterableMap<K, V> makeFullMap() {
+        Map<K, V> m = new HashMap<K, V>();
         addSampleMappings(m);
-        return UnmodifiableMap.decorate(m);
+        return (IterableMap<K, V>) UnmodifiableMap.decorate(m);
     }
-    
+
     //-----------------------------------------------------------------------
     public void testUnmodifiable() {
-        assertTrue(makeEmptyMap() instanceof Unmodifiable);
+        assertTrue(makeObject() instanceof Unmodifiable);
         assertTrue(makeFullMap() instanceof Unmodifiable);
     }
-    
+
     public void testDecorateFactory() {
-        Map map = makeFullMap();
+        Map<K, V> map = makeFullMap();
         assertSame(map, UnmodifiableMap.decorate(map));
-        
+
         try {
             UnmodifiableMap.decorate(null);
             fail();

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestUnmodifiableOrderedMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestUnmodifiableOrderedMap.java b/src/test/org/apache/commons/collections/map/TestUnmodifiableOrderedMap.java
index 9b831fe..74f4a9e 100644
--- a/src/test/org/apache/commons/collections/map/TestUnmodifiableOrderedMap.java
+++ b/src/test/org/apache/commons/collections/map/TestUnmodifiableOrderedMap.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.map;
 
 import java.util.HashMap;
-import java.util.Map;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
@@ -26,63 +25,63 @@ import org.apache.commons.collections.OrderedMap;
 import org.apache.commons.collections.Unmodifiable;
 
 /**
- * Extension of {@link AbstractTestOrderedMap} for exercising the 
+ * Extension of {@link AbstractTestOrderedMap} for exercising the
  * {@link UnmodifiableOrderedMap} implementation.
  *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Stephen Colebourne
  */
-public class TestUnmodifiableOrderedMap extends AbstractTestOrderedMap {
-    
+public class TestUnmodifiableOrderedMap<K, V> extends AbstractTestOrderedMap<K, V> {
+
     public TestUnmodifiableOrderedMap(String testName) {
         super(testName);
     }
-    
+
     public static Test suite() {
         return new TestSuite(TestUnmodifiableOrderedMap.class);
     }
-    
+
     public static void main(String args[]) {
         String[] testCaseName = { TestUnmodifiableOrderedMap.class.getName()};
         junit.textui.TestRunner.main(testCaseName);
     }
-    
+
     //-------------------------------------------------------------------
-    
-    public Map makeEmptyMap() {
-        return UnmodifiableOrderedMap.decorate(ListOrderedMap.decorate(new HashMap()));
+
+    public OrderedMap<K, V> makeObject() {
+        return UnmodifiableOrderedMap.decorate(ListOrderedMap.decorate(new HashMap<K, V>()));
     }
-    
+
     public boolean isPutChangeSupported() {
         return false;
     }
-    
+
     public boolean isPutAddSupported() {
         return false;
     }
-    
+
     public boolean isRemoveSupported() {
         return false;
     }
-    
-    public Map makeFullMap() {
-        OrderedMap m = ListOrderedMap.decorate(new HashMap());
+
+    public OrderedMap<K, V> makeFullMap() {
+        OrderedMap<K, V> m = ListOrderedMap.decorate(new HashMap<K, V>());
         addSampleMappings(m);
         return UnmodifiableOrderedMap.decorate(m);
     }
-    
+
     //-----------------------------------------------------------------------
     public void testUnmodifiable() {
-        assertTrue(makeEmptyMap() instanceof Unmodifiable);
+        assertTrue(makeObject() instanceof Unmodifiable);
         assertTrue(makeFullMap() instanceof Unmodifiable);
     }
-    
+
     public void testDecorateFactory() {
-        Map map = makeFullMap();
-        assertSame(map, UnmodifiableOrderedMap.decorate((OrderedMap) map));
-        
+        OrderedMap<K, V> map = makeFullMap();
+        assertSame(map, UnmodifiableOrderedMap.decorate(map));
+
         try {
             UnmodifiableOrderedMap.decorate(null);
             fail();

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/map/TestUnmodifiableSortedMap.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/map/TestUnmodifiableSortedMap.java b/src/test/org/apache/commons/collections/map/TestUnmodifiableSortedMap.java
index 3922b1b..eb155e9 100644
--- a/src/test/org/apache/commons/collections/map/TestUnmodifiableSortedMap.java
+++ b/src/test/org/apache/commons/collections/map/TestUnmodifiableSortedMap.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.
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.collections.map;
 
-import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
@@ -26,63 +25,63 @@ import junit.framework.TestSuite;
 import org.apache.commons.collections.Unmodifiable;
 
 /**
- * Extension of {@link AbstractTestSortedMap} for exercising the 
+ * Extension of {@link AbstractTestSortedMap} for exercising the
  * {@link UnmodifiableSortedMap} implementation.
  *
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
- * 
+ *
  * @author Stephen Colebourne
  */
-public class TestUnmodifiableSortedMap extends AbstractTestSortedMap {
-    
+public class TestUnmodifiableSortedMap<K, V> extends AbstractTestSortedMap<K, V> {
+
     public TestUnmodifiableSortedMap(String testName) {
         super(testName);
     }
-    
+
     public static Test suite() {
         return new TestSuite(TestUnmodifiableSortedMap.class);
     }
-    
+
     public static void main(String args[]) {
         String[] testCaseName = { TestUnmodifiableSortedMap.class.getName()};
         junit.textui.TestRunner.main(testCaseName);
     }
-    
+
     //-------------------------------------------------------------------
-    
-    public Map makeEmptyMap() {
-        return UnmodifiableSortedMap.decorate(new TreeMap());
+
+    public SortedMap<K, V> makeObject() {
+        return UnmodifiableSortedMap.decorate(new TreeMap<K, V>());
     }
-    
+
     public boolean isPutChangeSupported() {
         return false;
     }
-    
+
     public boolean isPutAddSupported() {
         return false;
     }
-    
+
     public boolean isRemoveSupported() {
         return false;
     }
-    
-    public Map makeFullMap() {
-        SortedMap m = new TreeMap();
+
+    public SortedMap<K, V> makeFullMap() {
+        SortedMap<K, V> m = new TreeMap<K, V>();
         addSampleMappings(m);
         return UnmodifiableSortedMap.decorate(m);
     }
-    
+
     //-----------------------------------------------------------------------
     public void testUnmodifiable() {
-        assertTrue(makeEmptyMap() instanceof Unmodifiable);
+        assertTrue(makeObject() instanceof Unmodifiable);
         assertTrue(makeFullMap() instanceof Unmodifiable);
     }
-    
+
     public void testDecorateFactory() {
-        Map map = makeFullMap();
-        assertSame(map, UnmodifiableSortedMap.decorate((SortedMap) map));
-        
+        SortedMap<K, V> map = makeFullMap();
+        assertSame(map, UnmodifiableSortedMap.decorate(map));
+
         try {
             UnmodifiableSortedMap.decorate(null);
             fail();

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/set/AbstractTestSet.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/set/AbstractTestSet.java b/src/test/org/apache/commons/collections/set/AbstractTestSet.java
index 77b37a8..46f1649 100644
--- a/src/test/org/apache/commons/collections/set/AbstractTestSet.java
+++ b/src/test/org/apache/commons/collections/set/AbstractTestSet.java
@@ -43,7 +43,7 @@ import org.apache.commons.collections.collection.AbstractTestCollection;
  * 
  * @author Paul Jack
  */
-public abstract class AbstractTestSet extends AbstractTestCollection {
+public abstract class AbstractTestSet<E> extends AbstractTestCollection<E> {
 
     /**
      * JUnit constructor.
@@ -61,14 +61,13 @@ public abstract class AbstractTestSet extends AbstractTestCollection {
     public void verify() {
         super.verify();
         
-        assertEquals("Sets should be equal", confirmed, collection);
+        assertEquals("Sets should be equal", getConfirmed(), getCollection());
         assertEquals("Sets should have equal hashCodes", 
-                     confirmed.hashCode(), collection.hashCode());
-        Collection set = makeConfirmedCollection();
-        Iterator iterator = collection.iterator();
+                     getConfirmed().hashCode(), getCollection().hashCode());
+        Collection<E> set = makeConfirmedCollection();
+        Iterator<E> iterator = getCollection().iterator();
         while (iterator.hasNext()) {
-            assertTrue("Set.iterator should only return unique elements", 
-                       set.add(iterator.next()));
+            assertTrue("Set.iterator should only return unique elements", set.add(iterator.next()));
         }
     }
 
@@ -85,8 +84,8 @@ public abstract class AbstractTestSet extends AbstractTestCollection {
      *
      * @return a confirmed empty collection
      */
-    public Collection makeConfirmedCollection() {
-        return new HashSet();
+    public Collection<E> makeConfirmedCollection() {
+        return new HashSet<E>();
     }
 
     /**
@@ -94,8 +93,8 @@ public abstract class AbstractTestSet extends AbstractTestCollection {
      *
      * @return a confirmed full collection
      */
-    public Collection makeConfirmedFullCollection() {
-        Collection set = makeConfirmedCollection();
+    public Collection<E> makeConfirmedFullCollection() {
+        Collection<E> set = makeConfirmedCollection();
         set.addAll(Arrays.asList(getFullElements()));
         return set;
     }
@@ -105,7 +104,7 @@ public abstract class AbstractTestSet extends AbstractTestCollection {
      *
      * @return an empty set
      */
-    public abstract Set makeEmptySet();
+    public abstract Set<E> makeObject();
 
     /**
      * Makes a full set by first creating an empty set and then adding
@@ -115,68 +114,48 @@ public abstract class AbstractTestSet extends AbstractTestCollection {
      *
      * @return a full set
      */
-    public Set makeFullSet() {
-        Set set = makeEmptySet();
+    public Set<E> makeFullCollection() {
+        Set<E> set = makeObject();
         set.addAll(Arrays.asList(getFullElements()));
         return set;
     }
 
-    /**
-     * Makes an empty collection by invoking {@link #makeEmptySet()}.  
-     *
-     * @return an empty collection
-     */
-    public final Collection makeCollection() {
-        return makeEmptySet();
-    }
-
-    /**
-     * Makes a full collection by invoking {@link #makeFullSet()}.
-     *
-     * @return a full collection
-     */
-    public final Collection makeFullCollection() {
-        return makeFullSet();
-    }
-
     //-----------------------------------------------------------------------
     /**
      * Return the {@link AbstractTestCollection#collection} fixture, but cast as a Set.  
      */
-    public Set getSet() {
-        return (Set)collection;
+    public Set<E> getCollection() {
+        return (Set<E>) super.getCollection();
     }
 
     /**
      * Return the {@link AbstractTestCollection#confirmed} fixture, but cast as a Set.
      */
-    public Set getConfirmedSet() {
-        return (Set)confirmed;
+    public Set<E> getConfirmed() {
+        return (Set<E>) super.getConfirmed();
     }
 
     //-----------------------------------------------------------------------
     /**
      * Tests {@link Set#equals(Object)}.
      */
+    @SuppressWarnings("unchecked")
     public void testSetEquals() {
         resetEmpty();
-        assertEquals("Empty sets should be equal", 
-                     getSet(), getConfirmedSet());
+        assertEquals("Empty sets should be equal", getCollection(), getConfirmed());
         verify();
 
-        Collection set2 = makeConfirmedCollection();
-        set2.add("foo");
-        assertTrue("Empty set shouldn't equal nonempty set", 
-                   !getSet().equals(set2));
+        Collection<E> set2 = makeConfirmedCollection();
+        set2.add((E) "foo");
+        assertTrue("Empty set shouldn't equal nonempty set", !getCollection().equals(set2));
 
         resetFull();
-        assertEquals("Full sets should be equal", getSet(), getConfirmedSet());
+        assertEquals("Full sets should be equal", getCollection(), getConfirmed());
         verify();
 
         set2.clear();
         set2.addAll(Arrays.asList(getOtherElements()));
-        assertTrue("Sets with different contents shouldn't be equal", 
-                   !getSet().equals(set2));
+        assertTrue("Sets with different contents shouldn't be equal", !getCollection().equals(set2));
     }
 
     /**
@@ -185,11 +164,11 @@ public abstract class AbstractTestSet extends AbstractTestCollection {
     public void testSetHashCode() {
         resetEmpty();
         assertEquals("Empty sets have equal hashCodes", 
-                     getSet().hashCode(), getConfirmedSet().hashCode());
+                getCollection().hashCode(), getConfirmed().hashCode());
 
         resetFull();
         assertEquals("Equal sets have equal hashCodes", 
-                     getSet().hashCode(), getConfirmedSet().hashCode());
+                getCollection().hashCode(), getConfirmed().hashCode());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/set/AbstractTestSortedSet.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/set/AbstractTestSortedSet.java b/src/test/org/apache/commons/collections/set/AbstractTestSortedSet.java
index 08ec512..0006d18 100644
--- a/src/test/org/apache/commons/collections/set/AbstractTestSortedSet.java
+++ b/src/test/org/apache/commons/collections/set/AbstractTestSortedSet.java
@@ -16,9 +16,7 @@
  */
 package org.apache.commons.collections.set;
 
-import java.util.Collection;
 import java.util.Iterator;
-import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
@@ -38,7 +36,7 @@ import org.apache.commons.collections.BulkTest;
  * @author Stephen Colebourne
  * @author Dieter Wimberger
  */
-public abstract class AbstractTestSortedSet extends AbstractTestSet {
+public abstract class AbstractTestSortedSet<E> extends AbstractTestSet<E> {
 
     /**
      * JUnit constructor.
@@ -59,10 +57,10 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
         
         // Check that iterator returns elements in order and first() and last()
         // are consistent
-        Iterator colliter = collection.iterator();
-        Iterator confiter = confirmed.iterator();
-        Object first = null;
-        Object last = null;
+        Iterator<E> colliter = getCollection().iterator();
+        Iterator<E> confiter = getConfirmed().iterator();
+        E first = null;
+        E last = null;
         while (colliter.hasNext()) {
             if (first == null) {
                 first = colliter.next();
@@ -72,11 +70,11 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
             }  
             assertEquals("Element appears to be out of order.", last, confiter.next());
         }
-        if (collection.size() > 0) {
+        if (getCollection().size() > 0) {
             assertEquals("Incorrect element returned by first().", first,
-                ((SortedSet) collection).first());
+                getCollection().first());
             assertEquals("Incorrect element returned by last().", last,
-                ((SortedSet) collection).last());
+                getCollection().last());
         }
     }
 
@@ -89,47 +87,56 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
         return false;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public abstract SortedSet<E> makeObject();
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public SortedSet<E> makeFullCollection() {
+        return (SortedSet<E>) super.makeFullCollection();
+    }
+
     //-----------------------------------------------------------------------
     /**
      * Returns an empty {@link TreeSet} for use in modification testing.
      *
      * @return a confirmed empty collection
      */
-    public Collection makeConfirmedCollection() {
-        return new TreeSet();
+    public SortedSet<E> makeConfirmedCollection() {
+        return new TreeSet<E>();
     }
 
     //-----------------------------------------------------------------------
-    /**
-     * Return the {@link AbstractTestCollection#confirmed} fixture, but cast as a
-     * SortedSet.
-     */
-    public SortedSet getConfirmedSortedSet() {
-        return (SortedSet) confirmed;
-    }
 
     //-----------------------------------------------------------------------
     /**
      * Override to return comparable objects.
      */
-    public Object[] getFullNonNullElements() {
+    @SuppressWarnings("unchecked")
+    public E[] getFullNonNullElements() {
         Object[] elements = new Object[30];
 
         for (int i = 0; i < 30; i++) {
             elements[i] = new Integer(i + i + 1);
         }
-        return elements;
+        return (E[]) elements;
     }
 
     /**
      * Override to return comparable objects.
      */
-    public Object[] getOtherNonNullElements() {
+    @SuppressWarnings("unchecked")
+    public E[] getOtherNonNullElements() {
         Object[] elements = new Object[30];
         for (int i = 0; i < 30; i++) {
             elements[i] = new Integer(i + i + 2);
         }
-        return elements;
+        return (E[]) elements;
     }
 
     //-----------------------------------------------------------------------
@@ -181,23 +188,24 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
         return new TestSortedSetSubSet(lobound, false);
     }
 
-    public class TestSortedSetSubSet extends AbstractTestSortedSet {
+    public class TestSortedSetSubSet extends AbstractTestSortedSet<E> {
 
         private int m_Type;
         private int m_LowBound;
         private int m_HighBound;
-        private Object[] m_FullElements;
-        private Object[] m_OtherElements;
+        private E[] m_FullElements;
+        private E[] m_OtherElements;
 
+        @SuppressWarnings("unchecked")
         public TestSortedSetSubSet(int bound, boolean head) {
             super("TestSortedSetSubSet");
             if (head) {
                 //System.out.println("HEADSET");
                 m_Type = TYPE_HEADSET;
                 m_HighBound = bound;
-                m_FullElements = new Object[bound];
+                m_FullElements = (E[]) new Object[bound];
                 System.arraycopy(AbstractTestSortedSet.this.getFullElements(), 0, m_FullElements, 0, bound);
-                m_OtherElements = new Object[bound - 1];
+                m_OtherElements = (E[]) new Object[bound - 1];
                 System.arraycopy(//src src_pos dst dst_pos length
                 AbstractTestSortedSet.this.getOtherElements(), 0, m_OtherElements, 0, bound - 1);
                 //System.out.println(new TreeSet(Arrays.asList(m_FullElements)));
@@ -208,9 +216,9 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
                 m_LowBound = bound;
                 Object[] allelements = AbstractTestSortedSet.this.getFullElements();
                 //System.out.println("bound = "+bound +"::length="+allelements.length);
-                m_FullElements = new Object[allelements.length - bound];
+                m_FullElements = (E[]) new Object[allelements.length - bound];
                 System.arraycopy(allelements, bound, m_FullElements, 0, allelements.length - bound);
-                m_OtherElements = new Object[allelements.length - bound - 1];
+                m_OtherElements = (E[]) new Object[allelements.length - bound - 1];
                 System.arraycopy(//src src_pos dst dst_pos length
                 AbstractTestSortedSet.this.getOtherElements(), bound, m_OtherElements, 0, allelements.length - bound - 1);
                 //System.out.println(new TreeSet(Arrays.asList(m_FullElements)));
@@ -223,6 +231,7 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
 
         } //type
 
+        @SuppressWarnings("unchecked")
         public TestSortedSetSubSet(int lobound, int hibound) {
             super("TestSortedSetSubSet");
             //System.out.println("SUBSET");
@@ -231,9 +240,9 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
             m_HighBound = hibound;
             int length = hibound - lobound;
             //System.out.println("Low=" + lobound + "::High=" + hibound + "::Length=" + length);
-            m_FullElements = new Object[length];
+            m_FullElements = (E[]) new Object[length];
             System.arraycopy(AbstractTestSortedSet.this.getFullElements(), lobound, m_FullElements, 0, length);
-            m_OtherElements = new Object[length - 1];
+            m_OtherElements = (E[]) new Object[length - 1];
             System.arraycopy(//src src_pos dst dst_pos length
             AbstractTestSortedSet.this.getOtherElements(), lobound, m_OtherElements, 0, length - 1);
 
@@ -255,15 +264,15 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
             return AbstractTestSortedSet.this.isFailFastSupported();
         }
 
-        public Object[] getFullElements() {
+        public E[] getFullElements() {
             return m_FullElements;
         }
-        public Object[] getOtherElements() {
+        public E[] getOtherElements() {
             return m_OtherElements;
         }
 
-        private SortedSet getSubSet(SortedSet set) {
-            Object[] elements = AbstractTestSortedSet.this.getFullElements();
+        private SortedSet<E> getSubSet(SortedSet<E> set) {
+            E[] elements = AbstractTestSortedSet.this.getFullElements();
             switch (m_Type) {
                 case TYPE_SUBSET :
                     return set.subSet(elements[m_LowBound], elements[m_HighBound]);
@@ -276,14 +285,12 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
             }
         }
 
-        public Set makeEmptySet() {
-            SortedSet s = (SortedSet) AbstractTestSortedSet.this.makeEmptySet();
-            return getSubSet(s);
+        public SortedSet<E> makeObject() {
+            return getSubSet(AbstractTestSortedSet.this.makeObject());
         }
 
-        public Set makeFullSet() {
-            SortedSet s = (SortedSet) AbstractTestSortedSet.this.makeFullCollection();
-            return getSubSet(s);
+        public SortedSet<E> makeFullCollection() {
+            return getSubSet(AbstractTestSortedSet.this.makeFullCollection());
         }
         
         public boolean isTestSerialization() {
@@ -306,4 +313,19 @@ public abstract class AbstractTestSortedSet extends AbstractTestSet {
 
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public SortedSet<E> getCollection() {
+        return (SortedSet<E>) super.getCollection();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public SortedSet<E> getConfirmed() {
+        return (SortedSet<E>) super.getConfirmed();
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-collections/blob/884baf0d/src/test/org/apache/commons/collections/set/TestCompositeSet.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/set/TestCompositeSet.java b/src/test/org/apache/commons/collections/set/TestCompositeSet.java
index 9ae926c..680f7df 100644
--- a/src/test/org/apache/commons/collections/set/TestCompositeSet.java
+++ b/src/test/org/apache/commons/collections/set/TestCompositeSet.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.
@@ -27,7 +27,7 @@ import junit.framework.TestSuite;
 import org.apache.commons.collections.collection.CompositeCollection;
 
 /**
- * Extension of {@link AbstractTestSet} for exercising the 
+ * Extension of {@link AbstractTestSet} for exercising the
  * {@link CompositeSet} implementation.
  *
  * @since Commons Collections 3.0
@@ -37,110 +37,117 @@ import org.apache.commons.collections.collection.CompositeCollection;
  * @author Phil Steitz
  */
 
-public class TestCompositeSet extends AbstractTestSet {
+public class TestCompositeSet<E> extends AbstractTestSet<E> {
     public TestCompositeSet(String name) {
         super(name);
     }
-    
+
     public static Test suite() {
         return new TestSuite(TestCompositeSet.class);
     }
-    
-    public Set makeEmptySet() {
-        final HashSet contained = new HashSet();
-        CompositeSet set = new CompositeSet(contained);
-        set.setMutator(new CompositeSet.SetMutator() {
-            public void resolveCollision(CompositeSet comp, Set existing, 
-                Set added, Collection intersects) {
+
+    public CompositeSet<E> makeObject() {
+        final HashSet<E> contained = new HashSet<E>();
+        CompositeSet<E> set = new CompositeSet<E>(contained);
+        set.setMutator(new CompositeSet.SetMutator<E>() {
+            public void resolveCollision(CompositeSet<E> comp, Set<E> existing,
+                Set<E> added, Collection<E> intersects) {
                 throw new IllegalArgumentException();
             }
-            
-            public boolean add(CompositeCollection composite, 
-                    List collections, Object obj) {
+
+            public boolean add(CompositeCollection<E> composite,
+                    List<Collection<E>> collections, E obj) {
                 return contained.add(obj);
             }
-            
-            public boolean addAll(CompositeCollection composite, 
-                    List collections, Collection coll) {
+
+            public boolean addAll(CompositeCollection<E> composite,
+                    List<Collection<E>> collections, Collection<? extends E> coll) {
                 return contained.addAll(coll);
             }
-            
-            public boolean remove(CompositeCollection composite, 
-                    List collections, Object obj) {
+
+            public boolean remove(CompositeCollection<E> composite,
+                    List<Collection<E>> collections, Object obj) {
                 return contained.remove(obj);
             }
         });
         return set;
     }
-    
-    public Set buildOne() {
-        HashSet set = new HashSet();
-        set.add("1");
-        set.add("2");
+
+    @SuppressWarnings("unchecked")
+    public Set<E> buildOne() {
+        HashSet<E> set = new HashSet<E>();
+        set.add((E) "1");
+        set.add((E) "2");
         return set;
     }
-    
-    public Set buildTwo() {
-        HashSet set = new HashSet();
-        set.add("3");
-        set.add("4");
+
+    @SuppressWarnings("unchecked")
+    public Set<E> buildTwo() {
+        HashSet<E> set = new HashSet<E>();
+        set.add((E) "3");
+        set.add((E) "4");
         return set;
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testContains() {
-        CompositeSet set = new CompositeSet(new Set[]{buildOne(), buildTwo()});
+        CompositeSet<E> set = new CompositeSet<E>(new Set[]{ buildOne(), buildTwo() });
         assertTrue(set.contains("1"));
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testRemoveUnderlying() {
-        Set one = buildOne();
-        Set two = buildTwo();
-        CompositeSet set = new CompositeSet(new Set[]{one, two});
+        Set<E> one = buildOne();
+        Set<E> two = buildTwo();
+        CompositeSet<E> set = new CompositeSet<E>(new Set[] { one, two });
         one.remove("1");
         assertFalse(set.contains("1"));
-        
+
         two.remove("3");
         assertFalse(set.contains("3"));
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testRemoveComposited() {
-        Set one = buildOne();
-        Set two = buildTwo();
-        CompositeSet set = new CompositeSet(new Set[]{one, two});
+        Set<E> one = buildOne();
+        Set<E> two = buildTwo();
+        CompositeSet<E> set = new CompositeSet<E>(new Set[] { one, two });
         set.remove("1");
         assertFalse(one.contains("1"));
-        
+
         set.remove("3");
         assertFalse(one.contains("3"));
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testFailedCollisionResolution() {
-        Set one = buildOne();
-        Set two = buildTwo();
-        CompositeSet set = new CompositeSet(new Set[]{one, two});
-        set.setMutator(new CompositeSet.SetMutator() {
-            public void resolveCollision(CompositeSet comp, Set existing, 
-                Set added, Collection intersects) {
+        Set<E> one = buildOne();
+        Set<E> two = buildTwo();
+        CompositeSet<E> set = new CompositeSet<E>(new Set[] { one, two });
+        set.setMutator(new CompositeSet.SetMutator<E>() {
+            public void resolveCollision(CompositeSet<E> comp, Set<E> existing,
+                Set<E> added, Collection<E> intersects) {
+                //noop
             }
-            
-            public boolean add(CompositeCollection composite, 
-                    List collections, Object obj) {
+
+            public boolean add(CompositeCollection<E> composite,
+                    List<Collection<E>> collections, E obj) {
                 throw new UnsupportedOperationException();
             }
-            
-            public boolean addAll(CompositeCollection composite, 
-                    List collections, Collection coll) {
+
+            public boolean addAll(CompositeCollection<E> composite,
+                    List<Collection<E>> collections, Collection<? extends E> coll) {
                 throw new UnsupportedOperationException();
             }
-            
-            public boolean remove(CompositeCollection composite, 
-                    List collections, Object obj) {
+
+            public boolean remove(CompositeCollection<E> composite,
+                    List<Collection<E>> collections, Object obj) {
                 throw new UnsupportedOperationException();
             }
         });
-        
-        HashSet three = new HashSet();
-        three.add("1");
+
+        HashSet<E> three = new HashSet<E>();
+        three.add((E) "1");
         try {
             set.addComposited(three);
             fail("IllegalArgumentException should have been thrown");
@@ -149,22 +156,23 @@ public class TestCompositeSet extends AbstractTestSet {
             // expected
         }
     }
-    
+
+    @SuppressWarnings("unchecked")
     public void testAddComposited() {
-        Set one = buildOne();
-        Set two = buildTwo();
-        CompositeSet set = new CompositeSet();
+        Set<E> one = buildOne();
+        Set<E> two = buildTwo();
+        CompositeSet<E> set = new CompositeSet<E>();
         set.addComposited(one, two);
-        CompositeSet set2 = new CompositeSet(buildOne());
+        CompositeSet<E> set2 = new CompositeSet<E>(buildOne());
         set2.addComposited(buildTwo());
         assertTrue(set.equals(set2));
-        HashSet set3 = new HashSet();
-        set3.add("1");
-        set3.add("2");
-        set3.add("3");
-        HashSet set4 = new HashSet();
-        set4.add("4");
-        CompositeSet set5 = new CompositeSet(set3);
+        HashSet<E> set3 = new HashSet<E>();
+        set3.add((E) "1");
+        set3.add((E) "2");
+        set3.add((E) "3");
+        HashSet<E> set4 = new HashSet<E>();
+        set4.add((E) "4");
+        CompositeSet<E> set5 = new CompositeSet<E>(set3);
         set5.addComposited(set4);
         assertTrue(set.equals(set5));
         try {