I see it too.

Stepan / Mikhail, do you get build failures?  Shouldn't we stop putting
in new code until this is resolved?

I am happy to take a look at the error, and if it is not a quick fix I
think we can roll back Collections without trouble.

Regards,
Tim


Geir Magnusson Jr wrote:
> and the beer flowed....
> 
> Mark Hindess wrote:
>> This breaks the build.  I'm getting:
>>
>> compile:
>>     [javac] Compiling 1839 source files to /pbuilder/tmp/Harmony.clean/build
>>     [javac] 
>> /pbuilder/tmp/Harmony.clean/modules/luni/src/main/java/java/util/Collections.java:1074:
>>  name clash: add(java.lang.Object) in 
>> java.util.Collections.UnmodifiableCollection<java.util.Map.Entry<K,V>> and 
>> add(E) in java.util.Set<java.util.Map.Entry<K,V>> have the same erasure, yet 
>> neither overrides the other
>>     [javac]             private static class UnmodifiableEntrySet<K, V> 
>> extends UnmodifiableSet<Map.Entry<K, V>> {
>>     [javac]                                ^
>>
>> w/sun 1.5 javac on linux.
>>
>> Regards,
>>  Mark.
>>
>> On 9 June 2006 at 4:59, [EMAIL PROTECTED] wrote:
>>> Author: ndbeyer
>>> Date: Thu Jun  8 21:59:15 2006
>>> New Revision: 412928
>>>
>>> URL: http://svn.apache.org/viewvc?rev=412928&view=rev
>>> Log:
>>> Generification of methods.
>>>
>>> Modified:
>>>     
>>> incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java
>>> /util/Collections.java
>>>
>>> Modified: 
>>> incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/jav
>>> a/java/util/Collections.java
>>> URL: 
>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/m
>>> odules/luni/src/main/java/java/util/Collections.java?rev=412928&r1=412927&r2=
>>> 412928&view=diff
>>> =============================================================================
>>> =
>>> --- 
>>> incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java
>>> /util/Collections.java (original)
>>> +++ 
>>> incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java
>>> /util/Collections.java Thu Jun  8 21:59:15 2006
>>> @@ -27,15 +27,15 @@
>>>   */
>>>  public class Collections {
>>>  
>>> -   private static final class CopiesList extends AbstractList implements
>>> +   private static final class CopiesList<E> extends AbstractList<E> implem
>>> ents
>>>                     Serializable {
>>>             private static final long serialVersionUID = 273909926839871180
>>> 0L;
>>>  
>>>             private final int n;
>>>  
>>> -           private final Object element;
>>> +           private final E element;
>>>  
>>> -           CopiesList(int length, Object object) {
>>> +           CopiesList(int length, E object) {
>>>                     if (length < 0) {
>>>                             throw new IllegalArgumentException();
>>>                     }
>>> @@ -51,7 +51,7 @@
>>>                     return n;
>>>             }
>>>  
>>> -           public Object get(int location) {
>>> +           public E get(int location) {
>>>                     if (0 <= location && location < n)
>>>                             return element;
>>>                     throw new IndexOutOfBoundsException();
>>> @@ -162,13 +162,13 @@
>>>          }
>>>      }
>>>  
>>> -   private static final class SingletonSet extends AbstractSet implements
>>> +   private static final class SingletonSet<E> extends AbstractSet<E> imple
>>> ments
>>>                     Serializable {
>>>             private static final long serialVersionUID = 319368720755043167
>>> 9L;
>>>  
>>> -           final Object element;
>>> +           final E element;
>>>  
>>> -           SingletonSet(Object object) {
>>> +           SingletonSet(E object) {
>>>                     element = object;
>>>             }
>>>  
>>> @@ -180,15 +180,15 @@
>>>                     return 1;
>>>             }
>>>  
>>> -           public Iterator iterator() {
>>> -                   return new Iterator() {
>>> +           public Iterator<E> iterator() {
>>> +                   return new Iterator<E>() {
>>>                             boolean hasNext = true;
>>>  
>>>                             public boolean hasNext() {
>>>                                     return hasNext;
>>>                             }
>>>  
>>> -                           public Object next() {
>>> +                           public E next() {
>>>                                     if (hasNext) {
>>>                                             hasNext = false;
>>>                                             return element;
>>> @@ -203,13 +203,13 @@
>>>             }
>>>     }
>>>  
>>> -   private static final class SingletonList extends AbstractList implement
>>> s
>>> +   private static final class SingletonList<E> extends AbstractList<E> imp
>>> lements
>>>                     Serializable {
>>>             private static final long serialVersionUID = 309373661874065295
>>> 1L;
>>>  
>>> -           final Object element;
>>> +           final E element;
>>>  
>>> -           SingletonList(Object object) {
>>> +           SingletonList(E object) {
>>>                     element = object;
>>>             }
>>>  
>>> @@ -217,7 +217,7 @@
>>>                     return element == null ? object == null : element.equal
>>> s(object);
>>>             }
>>>  
>>> -           public Object get(int location) {
>>> +           public E get(int location) {
>>>                     if (location == 0)
>>>                             return element;
>>>                     throw new IndexOutOfBoundsException();
>>> @@ -228,13 +228,14 @@
>>>             }
>>>     }
>>>  
>>> -   private static final class SingletonMap extends AbstractMap implements
>>> +   private static final class SingletonMap<K, V> extends AbstractMap<K, V>
>>>  implements
>>>                     Serializable {
>>>             private static final long serialVersionUID = -69797244772150529
>>> 11L;
>>>  
>>> -           final Object k, v;
>>> +           final K k;
>>> +        final V v;
>>>  
>>> -           SingletonMap(Object key, Object value) {
>>> +           SingletonMap(K key, V value) {
>>>                     k = key;
>>>                     v = value;
>>>             }
>>> @@ -247,7 +248,7 @@
>>>                     return v == null ? value == null : v.equals(value);
>>>             }
>>>  
>>> -           public Object get(Object key) {
>>> +           public V get(Object key) {
>>>                     if (containsKey(key))
>>>                             return v;
>>>                     return null;
>>> @@ -257,11 +258,11 @@
>>>                     return 1;
>>>             }
>>>  
>>> -           public Set entrySet() {
>>> -                   return new AbstractSet() {
>>> +           public Set<Map.Entry<K, V>> entrySet() {
>>> +                   return new AbstractSet<Map.Entry<K, V>>() {
>>>                             public boolean contains(Object object) {
>>>                                     if (object instanceof Map.Entry) {
>>> -                                           Map.Entry entry = (Map.Entry) o
>>> bject;
>>> +                                           Map.Entry<?, ?> entry = (Map.En
>>> try) object;
>>>                                             return containsKey(entry.getKey
>>> ())
>>>                                                             && containsValu
>>> e(entry.getValue());
>>>                                     }
>>> @@ -272,27 +273,27 @@
>>>                                     return 1;
>>>                             }
>>>  
>>> -                           public Iterator iterator() {
>>> -                                   return new Iterator() {
>>> +                           public Iterator<Map.Entry<K, V>> iterator() {
>>> +                                   return new Iterator<Map.Entry<K, V>>() 
>>> {
>>>                                             boolean hasNext = true;
>>>  
>>>                                             public boolean hasNext() {
>>>                                                     return hasNext;
>>>                                             }
>>>  
>>> -                                           public Object next() {
>>> +                                           public Map.Entry<K, V> next() {
>>>                                                     if (hasNext) {
>>>                                                             hasNext = false
>>> ;
>>> -                                                           return new Map.
>>> Entry() {
>>> +                                                           return new Map.
>>> Entry<K, V>() {
>>>                                                                     public 
>>> boolean equals(Object object) {
>>>                                                                     
>>>     return contains(object);
>>>                                                                     }
>>>  
>>> -                                                                   public 
>>> Object getKey() {
>>> +                                                                   public 
>>> K getKey() {
>>>                                                                     
>>>     return k;
>>>                                                                     }
>>>  
>>> -                                                                   public 
>>> Object getValue() {
>>> +                                                                   public 
>>> V getValue() {
>>>                                                                     
>>>     return v;
>>>                                                                     }
>>>  
>>> @@ -301,7 +302,7 @@
>>>                                                                     
>>>                     ^ (v == null ? 0 : v.hashCode());
>>>                                                                     }
>>>  
>>> -                                                                   public 
>>> Object setValue(Object value) {
>>> +                                                                   public 
>>> V setValue(V value) {
>>>                                                                     
>>>     throw new UnsupportedOperationException();
>>>                                                                     }
>>>                                                             };
>>> @@ -318,29 +319,29 @@
>>>             }
>>>     }
>>>  
>>> -   static class SynchronizedCollection implements Collection, Serializable
>>>  {
>>> +   static class SynchronizedCollection<E> implements Collection<E>, Serial
>>> izable {
>>>             private static final long serialVersionUID = 305399503209133509
>>> 3L;
>>>  
>>> -           final Collection c;
>>> +           final Collection<E> c;
>>>             final Object mutex;
>>>  
>>> -           SynchronizedCollection(Collection collection) {
>>> +           SynchronizedCollection(Collection<E> collection) {
>>>                     c = collection;
>>>                     mutex = this;
>>>             }
>>>  
>>> -           SynchronizedCollection(Collection collection, Object mutex) {
>>> +           SynchronizedCollection(Collection<E> collection, Object mutex) 
>>> {
>>>                     c = collection;
>>>                     this.mutex = mutex;
>>>             }
>>>  
>>> -           public boolean add(Object object) {
>>> +           public boolean add(E object) {
>>>                     synchronized (mutex) {
>>>                             return c.add(object);
>>>                     }
>>>             }
>>>  
>>> -           public boolean addAll(Collection collection) {
>>> +           public boolean addAll(Collection<? extends E> collection) {
>>>                     synchronized (mutex) {
>>>                             return c.addAll(collection);
>>>                     }
>>> @@ -358,7 +359,7 @@
>>>                     }
>>>             }
>>>  
>>> -           public boolean containsAll(Collection collection) {
>>> +           public boolean containsAll(Collection<?> collection) {
>>>                     synchronized (mutex) {
>>>                             return c.containsAll(collection);
>>>                     }
>>> @@ -370,7 +371,7 @@
>>>                     }
>>>             }
>>>  
>>> -           public Iterator iterator() {
>>> +           public Iterator<E> iterator() {
>>>                     synchronized (mutex) {
>>>                             return c.iterator();
>>>                     }
>>> @@ -382,13 +383,13 @@
>>>                     }
>>>             }
>>>  
>>> -           public boolean removeAll(Collection collection) {
>>> +           public boolean removeAll(Collection<?> collection) {
>>>                     synchronized (mutex) {
>>>                             return c.removeAll(collection);
>>>                     }
>>>             }
>>>  
>>> -           public boolean retainAll(Collection collection) {
>>> +           public boolean retainAll(Collection<?> collection) {
>>>                     synchronized (mutex) {
>>>                             return c.retainAll(collection);
>>>                     }
>>> @@ -412,7 +413,7 @@
>>>                     }
>>>             }
>>>  
>>> -           public Object[] toArray(Object[] array) {
>>> +           public <T> T[] toArray(T[] array) {
>>>                     synchronized (mutex) {
>>>                             return c.toArray(array);
>>>                     }
>>> @@ -425,21 +426,21 @@
>>>             }
>>>     }
>>>  
>>> -   static class SynchronizedRandomAccessList extends SynchronizedList
>>> +   static class SynchronizedRandomAccessList<E> extends SynchronizedList<E
>>>                     implements RandomAccess {
>>>             private static final long serialVersionUID = 153067458360235848
>>> 2L;
>>>  
>>> -           SynchronizedRandomAccessList(List l) {
>>> +           SynchronizedRandomAccessList(List<E> l) {
>>>                     super(l);
>>>             }
>>>  
>>> -           SynchronizedRandomAccessList(List l, Object mutex) {
>>> +           SynchronizedRandomAccessList(List<E> l, Object mutex) {
>>>                     super(l, mutex);
>>>             }
>>>  
>>> -           public List subList(int start, int end) {
>>> +           public List<E> subList(int start, int end) {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedRandomAccessList(list
>>> +                           return new SynchronizedRandomAccessList<E>(list
>>>                                             .subList(start, end), mutex);
>>>                     }
>>>             }
>>> @@ -455,33 +456,33 @@
>>>              * @see SynchronizedList#readResolve()
>>>              */
>>>             private Object writeReplace() {
>>> -                   return new SynchronizedList(list);
>>> +                   return new SynchronizedList<E>(list);
>>>             }
>>>     }
>>>  
>>> -   static class SynchronizedList extends SynchronizedCollection implements
>>> -                   List {
>>> +   static class SynchronizedList<E> extends SynchronizedCollection<E> impl
>>> ements
>>> +                   List<E> {
>>>             private static final long serialVersionUID = -77540903729629715
>>> 24L;
>>>  
>>> -           final List list;
>>> +           final List<E> list;
>>>  
>>> -           SynchronizedList(List l) {
>>> +           SynchronizedList(List<E> l) {
>>>                     super(l);
>>>                     list = l;
>>>             }
>>>  
>>> -           SynchronizedList(List l, Object mutex) {
>>> +           SynchronizedList(List<E> l, Object mutex) {
>>>                     super(l, mutex);
>>>                     list = l;
>>>             }
>>>  
>>> -           public void add(int location, Object object) {
>>> +           public void add(int location, E object) {
>>>                     synchronized (mutex) {
>>>                             list.add(location, object);
>>>                     }
>>>             }
>>>  
>>> -           public boolean addAll(int location, Collection collection) {
>>> +           public boolean addAll(int location, Collection<? extends E> col
>>> lection) {
>>>                     synchronized (mutex) {
>>>                             return list.addAll(location, collection);
>>>                     }
>>> @@ -493,7 +494,7 @@
>>>                     }
>>>             }
>>>  
>>> -           public Object get(int location) {
>>> +           public E get(int location) {
>>>                     synchronized (mutex) {
>>>                             return list.get(location);
>>>                     }
>>> @@ -517,33 +518,33 @@
>>>                     }
>>>             }
>>>  
>>> -           public ListIterator listIterator() {
>>> +           public ListIterator<E> listIterator() {
>>>                     synchronized (mutex) {
>>>                             return list.listIterator();
>>>                     }
>>>             }
>>>  
>>> -           public ListIterator listIterator(int location) {
>>> +           public ListIterator<E> listIterator(int location) {
>>>                     synchronized (mutex) {
>>>                             return list.listIterator(location);
>>>                     }
>>>             }
>>>  
>>> -           public Object remove(int location) {
>>> +           public E remove(int location) {
>>>                     synchronized (mutex) {
>>>                             return list.remove(location);
>>>                     }
>>>             }
>>>  
>>> -           public Object set(int location, Object object) {
>>> +           public E set(int location, E object) {
>>>                     synchronized (mutex) {
>>>                             return list.set(location, object);
>>>                     }
>>>             }
>>>  
>>> -           public List subList(int start, int end) {
>>> +           public List<E> subList(int start, int end) {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedList(list.subList(start,
>>>  end), mutex);
>>> +                           return new SynchronizedList<E>(list.subList(sta
>>> rt, end), mutex);
>>>                     }
>>>             }
>>>  
>>> @@ -569,24 +570,24 @@
>>>              */
>>>             private Object readResolve() {
>>>                     if (list instanceof RandomAccess)
>>> -                           return new SynchronizedRandomAccessList(list, m
>>> utex);
>>> +                           return new SynchronizedRandomAccessList<E>(list
>>> , mutex);
>>>                     else
>>>                             return this;
>>>             }
>>>     }
>>>  
>>> -   static class SynchronizedMap implements Map, Serializable {
>>> +   static class SynchronizedMap<K, V> implements Map<K, V>, Serializable {
>>>             private static final long serialVersionUID = 197819847965902271
>>> 5L;
>>>  
>>> -           private final Map m;
>>> +           private final Map<K, V> m;
>>>             final Object mutex;
>>>  
>>> -           SynchronizedMap(Map map) {
>>> +           SynchronizedMap(Map<K, V> map) {
>>>                     m = map;
>>>                     mutex = this;
>>>             }
>>>  
>>> -           SynchronizedMap(Map map, Object mutex) {
>>> +           SynchronizedMap(Map<K, V> map, Object mutex) {
>>>                     m = map;
>>>                     this.mutex = mutex;
>>>             }
>>> @@ -609,9 +610,9 @@
>>>                     }
>>>             }
>>>  
>>> -           public Set entrySet() {
>>> +           public Set<Map.Entry<K, V>> entrySet() {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedSet(m.entrySet(), mutex)
>>> ;
>>> +                           return new SynchronizedSet<Map.Entry<K, V>>(m.e
>>> ntrySet(), mutex);
>>>                     }
>>>             }
>>>  
>>> @@ -621,7 +622,7 @@
>>>                     }
>>>             }
>>>  
>>> -           public Object get(Object key) {
>>> +           public V get(Object key) {
>>>                     synchronized (mutex) {
>>>                             return m.get(key);
>>>                     }
>>> @@ -639,25 +640,25 @@
>>>                     }
>>>             }
>>>  
>>> -           public Set keySet() {
>>> +           public Set<K> keySet() {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedSet(m.keySet(), mutex);
>>> +                           return new SynchronizedSet<K>(m.keySet(), mutex
>>> );
>>>                     }
>>>             }
>>>  
>>> -           public Object put(Object key, Object value) {
>>> +           public V put(K key, V value) {
>>>                     synchronized (mutex) {
>>>                             return m.put(key, value);
>>>                     }
>>>             }
>>>  
>>> -           public void putAll(Map map) {
>>> +           public void putAll(Map<? extends K, ? extends V> map) {
>>>                     synchronized (mutex) {
>>>                             m.putAll(map);
>>>                     }
>>>             }
>>>  
>>> -           public Object remove(Object key) {
>>> +           public V remove(Object key) {
>>>                     synchronized (mutex) {
>>>                             return m.remove(key);
>>>                     }
>>> @@ -669,9 +670,9 @@
>>>                     }
>>>             }
>>>  
>>> -           public Collection values() {
>>> +           public Collection<V> values() {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedCollection(m.values(), m
>>> utex);
>>> +                           return new SynchronizedCollection<V>(m.values()
>>> , mutex);
>>>                     }
>>>             }
>>>  
>>> @@ -688,14 +689,14 @@
>>>             }
>>>     }
>>>  
>>> -   static class SynchronizedSet extends SynchronizedCollection implements 
>>> Set {
>>> +   static class SynchronizedSet<E> extends SynchronizedCollection<E> imple
>>> ments Set<E> {
>>>             private static final long serialVersionUID = 487447009682186044
>>> L;
>>>  
>>> -           SynchronizedSet(Set set) {
>>> +           SynchronizedSet(Set<E> set) {
>>>                     super(set);
>>>             }
>>>  
>>> -           SynchronizedSet(Set set, Object mutex) {
>>> +           SynchronizedSet(Set<E> set, Object mutex) {
>>>                     super(set, mutex);
>>>             }
>>>  
>>> @@ -718,56 +719,56 @@
>>>             }
>>>     }
>>>  
>>> -   static class SynchronizedSortedMap extends SynchronizedMap implements
>>> -                   SortedMap {
>>> +   static class SynchronizedSortedMap<K, V> extends SynchronizedMap<K, V> 
>>> implements
>>> +                   SortedMap<K, V> {
>>>             private static final long serialVersionUID = -87981467694164837
>>> 93L;
>>>  
>>> -           private final SortedMap sm;
>>> +           private final SortedMap<K, V> sm;
>>>  
>>> -           SynchronizedSortedMap(SortedMap map) {
>>> +           SynchronizedSortedMap(SortedMap<K, V> map) {
>>>                     super(map);
>>>                     sm = map;
>>>             }
>>>  
>>> -           SynchronizedSortedMap(SortedMap map, Object mutex) {
>>> +           SynchronizedSortedMap(SortedMap<K, V> map, Object mutex) {
>>>                     super(map, mutex);
>>>                     sm = map;
>>>             }
>>>  
>>> -           public Comparator comparator() {
>>> +           public Comparator<? super K> comparator() {
>>>                     synchronized (mutex) {
>>>                             return sm.comparator();
>>>                     }
>>>             }
>>>  
>>> -           public Object firstKey() {
>>> +           public K firstKey() {
>>>                     synchronized (mutex) {
>>>                             return sm.firstKey();
>>>                     }
>>>             }
>>>  
>>> -           public SortedMap headMap(Object endKey) {
>>> +           public SortedMap<K, V> headMap(K endKey) {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedSortedMap(sm.headMap(end
>>> Key), mutex);
>>> +                           return new SynchronizedSortedMap<K, V>(sm.headM
>>> ap(endKey), mutex);
>>>                     }
>>>             }
>>>  
>>> -           public Object lastKey() {
>>> +           public K lastKey() {
>>>                     synchronized (mutex) {
>>>                             return sm.lastKey();
>>>                     }
>>>             }
>>>  
>>> -           public SortedMap subMap(Object startKey, Object endKey) {
>>> +           public SortedMap<K, V> subMap(K startKey, K endKey) {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedSortedMap(sm.subMap(star
>>> tKey, endKey),
>>> +                           return new SynchronizedSortedMap<K, V>(sm.subMa
>>> p(startKey, endKey),
>>>                                             mutex);
>>>                     }
>>>             }
>>>  
>>> -           public SortedMap tailMap(Object startKey) {
>>> +           public SortedMap<K, V> tailMap(K startKey) {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedSortedMap(sm.tailMap(sta
>>> rtKey), mutex);
>>> +                           return new SynchronizedSortedMap<K, V>(sm.tailM
>>> ap(startKey), mutex);
>>>                     }
>>>             }
>>>  
>>> @@ -778,55 +779,55 @@
>>>             }
>>>     }
>>>  
>>> -   static class SynchronizedSortedSet extends SynchronizedSet implements
>>> -                   SortedSet {
>>> +   static class SynchronizedSortedSet<E> extends SynchronizedSet<E> implem
>>> ents
>>> +                   SortedSet<E> {
>>>             private static final long serialVersionUID = 869580131086212740
>>> 6L;
>>>  
>>> -           private final SortedSet ss;
>>> +           private final SortedSet<E> ss;
>>>  
>>> -           SynchronizedSortedSet(SortedSet set) {
>>> +           SynchronizedSortedSet(SortedSet<E> set) {
>>>                     super(set);
>>>                     ss = set;
>>>             }
>>>  
>>> -           SynchronizedSortedSet(SortedSet set, Object mutex) {
>>> +           SynchronizedSortedSet(SortedSet<E> set, Object mutex) {
>>>                     super(set, mutex);
>>>                     ss = set;
>>>             }
>>>  
>>> -           public Comparator comparator() {
>>> +           public Comparator<? super E> comparator() {
>>>                     synchronized (mutex) {
>>>                             return ss.comparator();
>>>                     }
>>>             }
>>>  
>>> -           public Object first() {
>>> +           public E first() {
>>>                     synchronized (mutex) {
>>>                             return ss.first();
>>>                     }
>>>             }
>>>  
>>> -           public SortedSet headSet(Object end) {
>>> +           public SortedSet<E> headSet(E end) {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedSortedSet(ss.headSet(end
>>> ), mutex);
>>> +                           return new SynchronizedSortedSet<E>(ss.headSet(
>>> end), mutex);
>>>                     }
>>>             }
>>>  
>>> -           public Object last() {
>>> +           public E last() {
>>>                     synchronized (mutex) {
>>>                             return ss.last();
>>>                     }
>>>             }
>>>  
>>> -           public SortedSet subSet(Object start, Object end) {
>>> +           public SortedSet<E> subSet(E start, E end) {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedSortedSet(ss.subSet(star
>>> t, end), mutex);
>>> +                           return new SynchronizedSortedSet<E>(ss.subSet(s
>>> tart, end), mutex);
>>>                     }
>>>             }
>>>  
>>> -           public SortedSet tailSet(Object start) {
>>> +           public SortedSet<E> tailSet(E start) {
>>>                     synchronized (mutex) {
>>> -                           return new SynchronizedSortedSet(ss.tailSet(sta
>>> rt), mutex);
>>> +                           return new SynchronizedSortedSet<E>(ss.tailSet(
>>> start), mutex);
>>>                     }
>>>             }
>>>  
>>> @@ -837,13 +838,13 @@
>>>             }
>>>     }
>>>  
>>> -   private static class UnmodifiableCollection implements Collection,
>>> +   private static class UnmodifiableCollection<E> implements Collection<E>
>>> ,
>>>                     Serializable {
>>>             private static final long serialVersionUID = 182001775257891407
>>> 8L;
>>>  
>>> -           final Collection c;
>>> +           final Collection<E> c;
>>>  
>>> -           UnmodifiableCollection(Collection collection) {
>>> +           UnmodifiableCollection(Collection<E> collection) {
>>>                     c = collection;
>>>             }
>>>  
>>> @@ -851,7 +852,7 @@
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> -           public boolean addAll(Collection collection) {
>>> +           public boolean addAll(Collection<? extends E> collection) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> @@ -863,7 +864,7 @@
>>>                     return c.contains(object);
>>>             }
>>>  
>>> -           public boolean containsAll(Collection collection) {
>>> +           public boolean containsAll(Collection<?> collection) {
>>>                     return c.containsAll(collection);
>>>             }
>>>  
>>> @@ -871,15 +872,15 @@
>>>                     return c.isEmpty();
>>>             }
>>>  
>>> -           public Iterator iterator() {
>>> -                   return new Iterator() {
>>> -                           Iterator iterator = c.iterator();
>>> +           public Iterator<E> iterator() {
>>> +                   return new Iterator<E>() {
>>> +                           Iterator<E> iterator = c.iterator();
>>>  
>>>                             public boolean hasNext() {
>>>                                     return iterator.hasNext();
>>>                             }
>>>  
>>> -                           public Object next() {
>>> +                           public E next() {
>>>                                     return iterator.next();
>>>                             }
>>>  
>>> @@ -893,11 +894,11 @@
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> -           public boolean removeAll(Collection collection) {
>>> +           public boolean removeAll(Collection<?> collection) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> -           public boolean retainAll(Collection collection) {
>>> +           public boolean retainAll(Collection<?> collection) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> @@ -905,11 +906,11 @@
>>>                     return c.size();
>>>             }
>>>  
>>> -           public java.lang.Object[] toArray() {
>>> +           public Object[] toArray() {
>>>                     return c.toArray();
>>>             }
>>>  
>>> -           public Object[] toArray(Object[] array) {
>>> +           public <T> T[] toArray(T[] array) {
>>>              return c.toArray(array);
>>>          }
>>>  
>>> @@ -918,16 +919,16 @@
>>>          }
>>>     }
>>>  
>>> -   private static class UnmodifiableRandomAccessList extends UnmodifiableL
>>> ist
>>> +   private static class UnmodifiableRandomAccessList<E> extends Unmodifiab
>>> leList<E>
>>>                     implements RandomAccess {
>>>             private static final long serialVersionUID = -25423088369663820
>>> 01L;
>>>  
>>> -           UnmodifiableRandomAccessList(List l) {
>>> +           UnmodifiableRandomAccessList(List<E> l) {
>>>                     super(l);
>>>             }
>>>  
>>> -           public List subList(int start, int end) {
>>> -                   return new UnmodifiableRandomAccessList(list.subList(st
>>> art, end));
>>> +           public List<E> subList(int start, int end) {
>>> +                   return new UnmodifiableRandomAccessList<E>(list.subList
>>> (start, end));
>>>             }
>>>  
>>>             /**
>>> @@ -941,26 +942,26 @@
>>>              * @see UnmodifiableList#readResolve()
>>>              */
>>>             private Object writeReplace() {
>>> -                   return new UnmodifiableList(list);
>>> +                   return new UnmodifiableList<E>(list);
>>>             }
>>>     }
>>>  
>>> -   private static class UnmodifiableList extends UnmodifiableCollection
>>> -                   implements List {
>>> +   private static class UnmodifiableList<E> extends UnmodifiableCollection
>>> <E>
>>> +                   implements List<E> {
>>>             private static final long serialVersionUID = -28396735606524772
>>> 8L;
>>>  
>>> -           final List list;
>>> +           final List<E> list;
>>>  
>>> -           UnmodifiableList(List l) {
>>> +           UnmodifiableList(List<E> l) {
>>>                     super(l);
>>>                     list = l;
>>>             }
>>>  
>>> -           public void add(int location, Object object) {
>>> +           public void add(int location, E object) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> -           public boolean addAll(int location, Collection collection) {
>>> +           public boolean addAll(int location, Collection<? extends E> col
>>> lection) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> @@ -968,7 +969,7 @@
>>>                     return list.equals(object);
>>>             }
>>>  
>>> -           public Object get(int location) {
>>> +           public E get(int location) {
>>>                     return list.get(location);
>>>             }
>>>  
>>> @@ -984,15 +985,15 @@
>>>                     return list.lastIndexOf(object);
>>>             }
>>>  
>>> -           public ListIterator listIterator() {
>>> +           public ListIterator<E> listIterator() {
>>>                     return listIterator(0);
>>>             }
>>>  
>>> -           public ListIterator listIterator(final int location) {
>>> -                   return new ListIterator() {
>>> -                           ListIterator iterator = list.listIterator(locat
>>> ion);
>>> +           public ListIterator<E> listIterator(final int location) {
>>> +                   return new ListIterator<E>() {
>>> +                           ListIterator<E> iterator = list.listIterator(lo
>>> cation);
>>>  
>>> -                           public void add(Object object) {
>>> +                           public void add(E object) {
>>>                                     throw new UnsupportedOperationException
>>> ();
>>>                             }
>>>  
>>> @@ -1004,7 +1005,7 @@
>>>                                     return iterator.hasPrevious();
>>>                             }
>>>  
>>> -                           public Object next() {
>>> +                           public E next() {
>>>                                     return iterator.next();
>>>                             }
>>>  
>>> @@ -1012,7 +1013,7 @@
>>>                                     return iterator.nextIndex();
>>>                             }
>>>  
>>> -                           public Object previous() {
>>> +                           public E previous() {
>>>                                     return iterator.previous();
>>>                             }
>>>  
>>> @@ -1030,16 +1031,16 @@
>>>                     };
>>>             }
>>>  
>>> -           public Object remove(int location) {
>>> +           public E remove(int location) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> -           public Object set(int location, Object object) {
>>> +           public E set(int location, E object) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> -           public List subList(int start, int end) {
>>> -                   return new UnmodifiableList(list.subList(start, end));
>>> +           public List<E> subList(int start, int end) {
>>> +                   return new UnmodifiableList<E>(list.subList(start, end)
>>> );
>>>             }
>>>  
>>>             /**
>>> @@ -1059,24 +1060,24 @@
>>>              */
>>>             private Object readResolve() {
>>>                     if (list instanceof RandomAccess)
>>> -                           return new UnmodifiableRandomAccessList(list);
>>> +                           return new UnmodifiableRandomAccessList<E>(list
>>> );
>>>                     else
>>>                             return this;
>>>             }
>>>     }
>>>  
>>> -   private static class UnmodifiableMap implements Map, Serializable {
>>> +   private static class UnmodifiableMap<K, V> implements Map<K, V>, Serial
>>> izable {
>>>             private static final long serialVersionUID = -10342347285742860
>>> 14L;
>>>  
>>> -           private final Map m;
>>> +           private final Map<K, V> m;
>>>  
>>> -           private static class UnmodifiableEntrySet extends UnmodifiableS
>>> et {
>>> +           private static class UnmodifiableEntrySet<K, V> extends Unmodif
>>> iableSet<Map.Entry<K, V>> {
>>>                     private static final long serialVersionUID = 7854390611
>>> 657943733L;
>>>  
>>> -                   private static class UnmodifiableMapEntry implements Ma
>>> p.Entry {
>>> -                           Map.Entry mapEntry;
>>> +                   private static class UnmodifiableMapEntry<K, V> impleme
>>> nts Map.Entry<K, V> {
>>> +                           Map.Entry<K, V> mapEntry;
>>>  
>>> -                           UnmodifiableMapEntry(Map.Entry entry) {
>>> +                           UnmodifiableMapEntry(Map.Entry<K, V> entry) {
>>>                                     mapEntry = entry;
>>>                             }
>>>  
>>> @@ -1084,11 +1085,11 @@
>>>                                     return mapEntry.equals(object);
>>>                             }
>>>  
>>> -                           public Object getKey() {
>>> +                           public K getKey() {
>>>                                     return mapEntry.getKey();
>>>                             }
>>>  
>>> -                           public Object getValue() {
>>> +                           public V getValue() {
>>>                                     return mapEntry.getValue();
>>>                             }
>>>  
>>> @@ -1096,7 +1097,7 @@
>>>                                     return mapEntry.hashCode();
>>>                             }
>>>  
>>> -                           public Object setValue(Object object) {
>>> +                           public V setValue(V object) {
>>>                                     throw new UnsupportedOperationException
>>> ();
>>>                             }
>>>  
>>> @@ -1105,21 +1106,20 @@
>>>                             }
>>>                     }
>>>  
>>> -                   UnmodifiableEntrySet(Set set) {
>>> +                   UnmodifiableEntrySet(Set<Map.Entry<K, V>> set) {
>>>                             super(set);
>>>                     }
>>>  
>>> -                   public Iterator iterator() {
>>> -                           return new Iterator() {
>>> -                                   Iterator iterator = c.iterator();
>>> +                   public Iterator<Map.Entry<K, V>> iterator() {
>>> +                           return new Iterator<Map.Entry<K, V>>() {
>>> +                                   Iterator<Map.Entry<K, V>> iterator = c.
>>> iterator();
>>>  
>>>                                     public boolean hasNext() {
>>>                                             return iterator.hasNext();
>>>                                     }
>>>  
>>> -                                   public Object next() {
>>> -                                           return new UnmodifiableMapEntry
>>> ((Map.Entry) iterator
>>> -                                                           .next());
>>> +                                   public Map.Entry<K, V> next() {
>>> +                                           return new UnmodifiableMapEntry
>>> <K, V>(iterator.next());
>>>                                     }
>>>  
>>>                                     public void remove() {
>>> @@ -1131,27 +1131,30 @@
>>>                     public Object[] toArray() {
>>>                             int length = c.size();
>>>                             Object[] result = new Object[length];
>>> -                           Iterator it = iterator();
>>> +                           Iterator<?> it = iterator();
>>>                             for (int i = length; --i >= 0;)
>>>                                     result[i] = it.next();
>>>                             return result;
>>>                     }
>>>  
>>> -                   public Object[] toArray(Object[] contents) {
>>> +                   public <T> T[] toArray(T[] contents) {
>>>                             int size = c.size(), index = 0;
>>> -                           Iterator it = iterator();
>>> -                           if (size > contents.length)
>>> -                                   contents = (Object[]) Array.newInstance
>>> (contents.getClass()
>>> -                                                   .getComponentType(), si
>>> ze);
>>> -                           while (index < size)
>>> -                                   contents[index++] = it.next();
>>> -                           if (index < contents.length)
>>> +                           Iterator<Map.Entry<K, V>> it = iterator();
>>> +                           if (size > contents.length) {
>>> +                    Class<?> ct = contents.getClass().getComponentType();
>>> +                                   contents = (T[])Array.newInstance(ct, s
>>> ize);
>>> +                }
>>> +                           while (index < size) {
>>> +                                   contents[index++] = (T)it.next();
>>> +                }
>>> +                           if (index < contents.length) {
>>>                                     contents[index] = null;
>>> +                }
>>>                             return contents;
>>>                     }
>>>             }
>>>  
>>> -           UnmodifiableMap(Map map) {
>>> +           UnmodifiableMap(Map<K, V> map) {
>>>                     m = map;
>>>             }
>>>  
>>> @@ -1167,15 +1170,15 @@
>>>                     return m.containsValue(value);
>>>             }
>>>  
>>> -           public Set entrySet() {
>>> -                   return new UnmodifiableEntrySet(m.entrySet());
>>> +           public Set<Map.Entry<K, V>> entrySet() {
>>> +                   return new UnmodifiableEntrySet<K, V>(m.entrySet());
>>>             }
>>>  
>>>             public boolean equals(Object object) {
>>>                     return m.equals(object);
>>>             }
>>>  
>>> -           public Object get(Object key) {
>>> +           public V get(Object key) {
>>>                     return m.get(key);
>>>             }
>>>  
>>> @@ -1187,19 +1190,19 @@
>>>                     return m.isEmpty();
>>>             }
>>>  
>>> -           public Set keySet() {
>>> -                   return new UnmodifiableSet(m.keySet());
>>> +           public Set<K> keySet() {
>>> +                   return new UnmodifiableSet<K>(m.keySet());
>>>             }
>>>  
>>> -           public Object put(Object key, Object value) {
>>> +           public V put(K key, V value) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> -           public void putAll(Map map) {
>>> +           public void putAll(Map<? extends K, ? extends V> map) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> -           public Object remove(Object key) {
>>> +           public V remove(Object key) {
>>>                     throw new UnsupportedOperationException();
>>>             }
>>>  
>>> @@ -1207,20 +1210,20 @@
>>>                     return m.size();
>>>             }
>>>  
>>> -           public Collection values() {
>>> -                   return new UnmodifiableCollection(m.values());
>>> +           public Collection<V> values() {
>>> +                   return new UnmodifiableCollection<V>(m.values());
>>>             }
>>>  
>>> -                public String toString() {
>>> -                        return m.toString();
>>> -                }
>>> +           public String toString() {
>>> +               return m.toString();
>>> +           }
>>>     }
>>>  
>>> -   private static class UnmodifiableSet extends UnmodifiableCollection
>>> -                   implements Set {
>>> +   private static class UnmodifiableSet<E> extends UnmodifiableCollection<
>>> E>
>>> +                   implements Set<E> {
>>>             private static final long serialVersionUID = -92150478337750138
>>> 03L;
>>>  
>>> -           UnmodifiableSet(Set set) {
>>> +           UnmodifiableSet(Set<E> set) {
>>>                     super(set);
>>>             }
>>>  
>>> @@ -1233,75 +1236,75 @@
>>>             }
>>>     }
>>>  
>>> -   private static class UnmodifiableSortedMap extends UnmodifiableMap
>>> -                   implements SortedMap {
>>> +   private static class UnmodifiableSortedMap<K, V> extends UnmodifiableMa
>>> p<K, V>
>>> +                   implements SortedMap<K, V> {
>>>             private static final long serialVersionUID = -88067438159967132
>>> 06L;
>>>  
>>> -           private final SortedMap sm;
>>> +           private final SortedMap<K, V> sm;
>>>  
>>> -           UnmodifiableSortedMap(SortedMap map) {
>>> +           UnmodifiableSortedMap(SortedMap<K, V> map) {
>>>                     super(map);
>>>                     sm = map;
>>>             }
>>>  
>>> -           public Comparator comparator() {
>>> +           public Comparator<? super K> comparator() {
>>>                     return sm.comparator();
>>>             }
>>>  
>>> -           public Object firstKey() {
>>> +           public K firstKey() {
>>>                     return sm.firstKey();
>>>             }
>>>  
>>> -           public SortedMap headMap(Object before) {
>>> -                   return new UnmodifiableSortedMap(sm.headMap(before));
>>> +           public SortedMap<K, V> headMap(K before) {
>>> +                   return new UnmodifiableSortedMap<K, V>(sm.headMap(befor
>>> e));
>>>             }
>>>  
>>> -           public Object lastKey() {
>>> +           public K lastKey() {
>>>                     return sm.lastKey();
>>>             }
>>>  
>>> -           public SortedMap subMap(Object start, Object end) {
>>> -                   return new UnmodifiableSortedMap(sm.subMap(start, end))
>>> ;
>>> +           public SortedMap<K, V> subMap(K start, K end) {
>>> +                   return new UnmodifiableSortedMap<K, V>(sm.subMap(start,
>>>  end));
>>>             }
>>>  
>>> -           public SortedMap tailMap(Object after) {
>>> -                   return new UnmodifiableSortedMap(sm.tailMap(after));
>>> +           public SortedMap<K, V> tailMap(K after) {
>>> +                   return new UnmodifiableSortedMap<K, V>(sm.tailMap(after
>>> ));
>>>             }
>>>     }
>>>  
>>> -   private static class UnmodifiableSortedSet extends UnmodifiableSet
>>> -                   implements SortedSet {
>>> +   private static class UnmodifiableSortedSet<E> extends UnmodifiableSet<E
>>> +                   implements SortedSet<E> {
>>>             private static final long serialVersionUID = -49291495915999111
>>> 65L;
>>>  
>>> -           private final SortedSet ss;
>>> +           private final SortedSet<E> ss;
>>>  
>>> -           UnmodifiableSortedSet(SortedSet set) {
>>> +           UnmodifiableSortedSet(SortedSet<E> set) {
>>>                     super(set);
>>>                     ss = set;
>>>             }
>>>  
>>> -           public Comparator comparator() {
>>> +           public Comparator<? super E> comparator() {
>>>                     return ss.comparator();
>>>             }
>>>  
>>> -           public Object first() {
>>> +           public E first() {
>>>                     return ss.first();
>>>             }
>>>  
>>> -           public SortedSet headSet(Object before) {
>>> -                   return new UnmodifiableSortedSet(ss.headSet(before));
>>> +           public SortedSet<E> headSet(E before) {
>>> +                   return new UnmodifiableSortedSet<E>(ss.headSet(before))
>>> ;
>>>             }
>>>  
>>> -           public Object last() {
>>> +           public E last() {
>>>                     return ss.last();
>>>             }
>>>  
>>> -           public SortedSet subSet(Object start, Object end) {
>>> -                   return new UnmodifiableSortedSet(ss.subSet(start, end))
>>> ;
>>> +           public SortedSet<E> subSet(E start, E end) {
>>> +                   return new UnmodifiableSortedSet<E>(ss.subSet(start, en
>>> d));
>>>             }
>>>  
>>> -           public SortedSet tailSet(Object after) {
>>> -                   return new UnmodifiableSortedSet(ss.tailSet(after));
>>> +           public SortedSet<E> tailSet(E after) {
>>> +                   return new UnmodifiableSortedSet<E>(ss.tailSet(after));
>>>             }
>>>     }
>>>  
>>> @@ -1327,7 +1330,7 @@
>>>     public static <T> int binarySearch(List<? extends Comparable<? super T>
>>>> list, T object) {
>>>             if (list == null)
>>>                     throw new NullPointerException();
>>> -           Comparable key = (Comparable) object;
>>> +           Comparable key = (Comparable)object;
>>>             if (!(list instanceof RandomAccess)) {
>>>                     ListIterator it = list.listIterator();
>>>                     while (it.hasNext()) {
>>> @@ -1414,12 +1417,12 @@
>>>      *                when replacing an element in the destination list is 
>>> not
>>>      *                supported
>>>      */
>>> -   public static void copy(List destination, List source) {
>>> +   public static <T> void copy(List<? super T> destination, List<? extends
>>>  T> source) {
>>>             if (destination.size() < source.size()) {
>>>                     throw new ArrayIndexOutOfBoundsException();
>>>             }
>>> -           Iterator srcIt = source.iterator();
>>> -           ListIterator destIt = destination.listIterator();
>>> +           Iterator<? extends T> srcIt = source.iterator();
>>> +           ListIterator<? super T> destIt = destination.listIterator();
>>>             while (srcIt.hasNext()) {
>>>                     try {
>>>                             destIt.next();
>>> @@ -1464,7 +1467,7 @@
>>>      *                when replacing an element in the List is not supporte
>>> d
>>>      */
>>>     public static <T> void fill(List<? super T> list, T object) {
>>> -        ListIterator it = list.listIterator();
>>> +        ListIterator<? super T> it = list.listIterator();
>>>             while (it.hasNext()) {
>>>                     it.next();
>>>                     it.set(object);
>>> @@ -1578,8 +1581,8 @@
>>>      * @exception IllegalArgumentException
>>>      *                when <code>length < 0</code>
>>>      */
>>> -   public static List nCopies(final int length, Object object) {
>>> -           return new CopiesList(length, object);
>>> +   public static <T> List<T> nCopies(final int length, T object) {
>>> +           return new CopiesList<T>(length, object);
>>>     }
>>>  
>>>     /**
>>> @@ -1592,7 +1595,7 @@
>>>      * @exception UnsupportedOperationException
>>>      *                when replacing an element in the List is not supporte
>>> d
>>>      */
>>> -   public static void reverse(List list) {
>>> +   public static void reverse(List<?> list) {
>>>             int size = list.size();
>>>             ListIterator front = list.listIterator();
>>>             ListIterator back = list.listIterator(size);
>>> @@ -1615,7 +1618,7 @@
>>>       * @see Comparable
>>>       * @see Serializable
>>>       */
>>> -    public static Comparator reverseOrder() {
>>> +    public static <T> Comparator<T> reverseOrder() {
>>>          return new ReverseComparator();
>>>      }
>>>  
>>> @@ -1637,7 +1640,7 @@
>>>       * @see Comparator
>>>       * @since 1.5
>>>       */
>>> -    public static Comparator reverseOrder(Comparator c) {
>>> +    public static <T> Comparator<T> reverseOrder(Comparator<T> c) {
>>>          if (c == null)
>>>              return reverseOrder();
>>>          return new ReverseComparatorWithComparator(c);
>>> @@ -1652,7 +1655,7 @@
>>>      * @exception UnsupportedOperationException
>>>      *                when replacing an element in the List is not supporte
>>> d
>>>      */
>>> -   public static void shuffle(List list) {
>>> +   public static void shuffle(List<?> list) {
>>>             shuffle(list, new Random());
>>>     }
>>>  
>>> @@ -1668,7 +1671,7 @@
>>>      * @exception UnsupportedOperationException
>>>      *                when replacing an element in the List is not supporte
>>> d
>>>      */
>>> -   public static void shuffle(List list, Random random) {
>>> +   public static void shuffle(List<?> list, Random random) {
>>>             if (!(list instanceof RandomAccess)) {
>>>                     Object[] array = list.toArray();
>>>                     for (int i = array.length - 1; i > 0; i--) {
>>> @@ -1687,11 +1690,12 @@
>>>                             it.set(array[i++]);
>>>                     }
>>>             } else {
>>> -                   for (int i = list.size() - 1; i > 0; i--) {
>>> +            List rawList = list;
>>> +                   for (int i = rawList.size() - 1; i > 0; i--) {
>>>                             int index = random.nextInt() % (i + 1);
>>>                             if (index < 0)
>>>                                     index = -index;
>>> -                           list.set(index, list.set(i, list.get(index)));
>>> +                           rawList.set(index, rawList.set(i, rawList.get(i
>>> ndex)));
>>>                     }
>>>             }
>>>     }
>>> @@ -1704,8 +1708,8 @@
>>>      *            the element
>>>      * @return a Set containing the element
>>>      */
>>> -   public static Set singleton(Object object) {
>>> -           return new SingletonSet(object);
>>> +   public static <E> Set<E> singleton(E object) {
>>> +           return new SingletonSet<E>(object);
>>>     }
>>>  
>>>     /**
>>> @@ -1716,8 +1720,8 @@
>>>      *            the element
>>>      * @return a List containing the element
>>>      */
>>> -   public static List singletonList(Object object) {
>>> -           return new SingletonList(object);
>>> +   public static <E> List<E> singletonList(E object) {
>>> +           return new SingletonList<E>(object);
>>>     }
>>>  
>>>     /**
>>> @@ -1730,8 +1734,8 @@
>>>      *            the value
>>>      * @return a Map containing the key and value
>>>      */
>>> -   public static Map singletonMap(Object key, Object value) {
>>> -           return new SingletonMap(key, value);
>>> +   public static <K, V> Map<K, V> singletonMap(K key, V value) {
>>> +           return new SingletonMap<K, V>(key, value);
>>>     }
>>>  
>>>     /**
>>> @@ -1744,14 +1748,14 @@
>>>      *                when an element in the List does not implement Compar
>>> able
>>>      *                or elements cannot be compared to each other
>>>      */
>>> -   public static void sort(List list) {
>>> +   public static <T extends Comparable<? super T>> void sort(List<T> list)
>>>  {
>>>             Object[] array = list.toArray();
>>>             Arrays.sort(array);
>>>             int i = 0;
>>> -           ListIterator it = list.listIterator();
>>> +           ListIterator<T> it = list.listIterator();
>>>             while (it.hasNext()) {
>>>                     it.next();
>>> -                   it.set(array[i++]);
>>> +                   it.set((T)array[i++]);
>>>             }
>>>     }
>>>  
>>> @@ -1767,14 +1771,14 @@
>>>      *                when elements in the List cannot be compared to each 
>>> other
>>>      *                using the Comparator
>>>      */
>>> -   public static void sort(List list, Comparator comparator) {
>>> +   public static <T> void sort(List<T> list, Comparator<? super T> compara
>>> tor) {
>>>             Object[] array = list.toArray();
>>> -           Arrays.sort(array, comparator);
>>> +           Arrays.sort(array, (Comparator<Object>)comparator);
>>>             int i = 0;
>>> -           ListIterator it = list.listIterator();
>>> +           ListIterator<T> it = list.listIterator();
>>>             while (it.hasNext()) {
>>>                     it.next();
>>> -                   it.set(array[i++]);
>>> +                   it.set((T)array[i++]);
>>>             }
>>>     }
>>>  
>>> @@ -1793,12 +1797,13 @@
>>>      * @exception IndexOutOfBoundsException
>>>      *                if index1 or index2 is out of range of this list
>>>      */
>>> -   public static void swap(List list, int index1, int index2) {
>>> +   public static void swap(List<?> list, int index1, int index2) {
>>>             if (list == null)
>>>                     throw new NullPointerException();
>>>             if (index1 == index2)
>>>                     return;
>>> -           list.set(index2, list.set(index1, list.get(index2)));
>>> +        List rawList = list;
>>> +        rawList.set(index2, rawList.set(index1, rawList.get(index2)));
>>>     }
>>>  
>>>     /**
>>> @@ -1820,7 +1825,7 @@
>>>      * @exception UnsupportedOperationException
>>>      *                if the list does not support setting elements
>>>      */
>>> -   public static boolean replaceAll(List list, Object obj, Object obj2) {
>>> +   public static <T> boolean replaceAll(List<T> list, T obj, T obj2) {
>>>             int index;
>>>             boolean found = false;
>>>  
>>> @@ -1843,7 +1848,8 @@
>>>      *            It can be any integer: 0, positive, negative, larger than
>>>  the
>>>      *            list size
>>>      */
>>> -   public static void rotate(List list, int dist) {
>>> +   public static void rotate(List<?> lst, int dist) {
>>> +        List list = lst;
>>>             int size = list.size();
>>>  
>>>             // Can't sensibly rotate an empty collection
>>> @@ -1898,7 +1904,7 @@
>>>      * @return the beginning index of the first occurrence of
>>>      *         <code>sublist</code> in <code>list</code>, or -1
>>>      */
>>> -   public static int indexOfSubList(List list, List sublist) {
>>> +   public static int indexOfSubList(List<?> list, List<?> sublist) {
>>>             int size = list.size();
>>>             int sublistSize = sublist.size();
>>>  
>>> @@ -1963,7 +1969,7 @@
>>>      * @return the beginning index of the last occurrence of <code>sublist<
>>> /code>
>>>      *         in <code>list</code>, or -1
>>>      */
>>> -   public static int lastIndexOfSubList(List list, List sublist) {
>>> +   public static int lastIndexOfSubList(List<?> list, List<?> sublist) {
>>>             int sublistSize = sublist.size();
>>>             int size = list.size();
>>>  
>>> @@ -2020,8 +2026,8 @@
>>>      *            Enumeration
>>>      * @return and ArrayList
>>>      */
>>> -   public static ArrayList list(Enumeration enumeration) {
>>> -           ArrayList list = new ArrayList();
>>> +   public static <T> ArrayList<T> list(Enumeration<T> enumeration) {
>>> +           ArrayList<T> list = new ArrayList<T>();
>>>             while (enumeration.hasMoreElements()) {
>>>                     list.add(enumeration.nextElement());
>>>             }
>>> @@ -2036,10 +2042,10 @@
>>>      *            the Collection
>>>      * @return a synchronized Collection
>>>      */
>>> -   public static Collection synchronizedCollection(Collection collection) 
>>> {
>>> +   public static <T> Collection<T> synchronizedCollection(Collection<T> co
>>> llection) {
>>>             if (collection == null)
>>>                     throw new NullPointerException();
>>> -           return new SynchronizedCollection(collection);
>>> +           return new SynchronizedCollection<T>(collection);
>>>     }
>>>  
>>>     /**
>>> @@ -2050,13 +2056,13 @@
>>>      *            the List
>>>      * @return a synchronized List
>>>      */
>>> -   public static List synchronizedList(List list) {
>>> +   public static <T> List<T> synchronizedList(List<T> list) {
>>>             if (list == null)
>>>                     throw new NullPointerException();
>>>             if (list instanceof RandomAccess)
>>> -                   return new SynchronizedRandomAccessList(list);
>>> +                   return new SynchronizedRandomAccessList<T>(list);
>>>             else
>>> -                   return new SynchronizedList(list);
>>> +                   return new SynchronizedList<T>(list);
>>>     }
>>>  
>>>     /**
>>> @@ -2067,10 +2073,10 @@
>>>      *            the Map
>>>      * @return a synchronized Map
>>>      */
>>> -   public static Map synchronizedMap(Map map) {
>>> +   public static <K, V> Map<K, V> synchronizedMap(Map<K, V> map) {
>>>             if (map == null)
>>>                     throw new NullPointerException();
>>> -           return new SynchronizedMap(map);
>>> +           return new SynchronizedMap<K, V>(map);
>>>     }
>>>  
>>>     /**
>>> @@ -2081,10 +2087,10 @@
>>>      *            the Set
>>>      * @return a synchronized Set
>>>      */
>>> -   public static Set synchronizedSet(Set set) {
>>> +   public static <E> Set<E> synchronizedSet(Set<E> set) {
>>>             if (set == null)
>>>                     throw new NullPointerException();
>>> -           return new SynchronizedSet(set);
>>> +           return new SynchronizedSet<E>(set);
>>>     }
>>>  
>>>     /**
>>> @@ -2095,10 +2101,10 @@
>>>      *            the SortedMap
>>>      * @return a synchronized SortedMap
>>>      */
>>> -   public static SortedMap synchronizedSortedMap(SortedMap map) {
>>> +   public static <K, V> SortedMap<K, V> synchronizedSortedMap(SortedMap<K,
>>>  V> map) {
>>>             if (map == null)
>>>                     throw new NullPointerException();
>>> -           return new SynchronizedSortedMap(map);
>>> +           return new SynchronizedSortedMap<K, V>(map);
>>>     }
>>>  
>>>     /**
>>> @@ -2109,10 +2115,10 @@
>>>      *            the SortedSet
>>>      * @return a synchronized SortedSet
>>>      */
>>> -   public static SortedSet synchronizedSortedSet(SortedSet set) {
>>> +   public static <E> SortedSet<E> synchronizedSortedSet(SortedSet<E> set) 
>>> {
>>>             if (set == null)
>>>                     throw new NullPointerException();
>>> -           return new SynchronizedSortedSet(set);
>>> +           return new SynchronizedSortedSet<E>(set);
>>>     }
>>>  
>>>     /**
>>> @@ -2124,10 +2130,10 @@
>>>      *            the Collection
>>>      * @return an unmodifiable Collection
>>>      */
>>> -   public static Collection unmodifiableCollection(Collection collection) 
>>> {
>>> +   public static <E> Collection<E> unmodifiableCollection(Collection<E> co
>>> llection) {
>>>             if (collection == null)
>>>                     throw new NullPointerException();
>>> -           return new UnmodifiableCollection(collection);
>>> +           return new UnmodifiableCollection<E>(collection);
>>>     }
>>>  
>>>     /**
>>> @@ -2139,13 +2145,13 @@
>>>      *            the List
>>>      * @return an unmodifiable List
>>>      */
>>> -   public static List unmodifiableList(List list) {
>>> +   public static <E> List<E> unmodifiableList(List<E> list) {
>>>             if (list == null)
>>>                     throw new NullPointerException();
>>>             if (list instanceof RandomAccess)
>>> -                   return new UnmodifiableRandomAccessList(list);
>>> +                   return new UnmodifiableRandomAccessList<E>(list);
>>>             else
>>> -                   return new UnmodifiableList(list);
>>> +                   return new UnmodifiableList<E>(list);
>>>     }
>>>  
>>>     /**
>>> @@ -2157,10 +2163,10 @@
>>>      *            the Map
>>>      * @return a unmodifiable Map
>>>      */
>>> -   public static Map unmodifiableMap(Map map) {
>>> +   public static <K, V> Map<K, V> unmodifiableMap(Map<K, V> map) {
>>>             if (map == null)
>>>                     throw new NullPointerException();
>>> -           return new UnmodifiableMap(map);
>>> +           return new UnmodifiableMap<K, V>(map);
>>>     }
>>>  
>>>     /**
>>> @@ -2172,10 +2178,10 @@
>>>      *            the Set
>>>      * @return a unmodifiable Set
>>>      */
>>> -   public static Set unmodifiableSet(Set set) {
>>> +   public static <E> Set<E> unmodifiableSet(Set<E> set) {
>>>             if (set == null)
>>>                     throw new NullPointerException();
>>> -           return new UnmodifiableSet(set);
>>> +           return new UnmodifiableSet<E>(set);
>>>     }
>>>  
>>>     /**
>>> @@ -2187,10 +2193,10 @@
>>>      *            the SortedMap
>>>      * @return a unmodifiable SortedMap
>>>      */
>>> -   public static SortedMap unmodifiableSortedMap(SortedMap map) {
>>> +   public static <K, V> SortedMap<K, V> unmodifiableSortedMap(SortedMap<K,
>>>  V> map) {
>>>             if (map == null)
>>>                     throw new NullPointerException();
>>> -           return new UnmodifiableSortedMap(map);
>>> +           return new UnmodifiableSortedMap<K, V>(map);
>>>     }
>>>  
>>>     /**
>>> @@ -2202,10 +2208,10 @@
>>>      *            the SortedSet
>>>      * @return a unmodifiable SortedSet
>>>      */
>>> -   public static SortedSet unmodifiableSortedSet(SortedSet set) {
>>> +   public static <E> SortedSet<E> unmodifiableSortedSet(SortedSet<E> set) 
>>> {
>>>             if (set == null)
>>>                     throw new NullPointerException();
>>> -           return new UnmodifiableSortedSet(set);
>>> +           return new UnmodifiableSortedSet<E>(set);
>>>     }
>>>      
>>>      /**
>>> @@ -2224,7 +2230,7 @@
>>>       *         
>>>       * @since 1.5
>>>       */
>>> -    public static int frequency(Collection c, Object o) {
>>> +    public static int frequency(Collection<?> c, Object o) {
>>>          if (c == null)
>>>              throw new NullPointerException();
>>>          if (c.isEmpty())
>>> @@ -2277,7 +2283,7 @@
>>>       * 
>>>       * @return a typesafe collection
>>>       */
>>> -    public static Collection checkedCollection(Collection c, Class type) {
>>> +    public static <E> Collection<E> checkedCollection(Collection<E> c, 
>>> Class
>>> <E> type) {
>>>          return new CheckedCollection(c, type);
>>>      }
>>>  
>>> @@ -2289,7 +2295,7 @@
>>>       * 
>>>       * @return a typesafe map
>>>       */
>>> -    public static Map checkedMap(Map m, Class keyType, Class valueType) {
>>> +    public static <K, V> Map<K,V> checkedMap(Map<K,V> m, Class<K> keyType, 
>>> C
>>> lass<V> valueType) {
>>>          return new CheckedMap(m, keyType, valueType);
>>>      }
>>>  
>>> @@ -2301,7 +2307,7 @@
>>>       * 
>>>       * @return a typesafe list
>>>       */
>>> -    public static List checkedList(List list, Class type) {
>>> +    public static <E> List<E> checkedList(List<E> list, Class<E> type) {
>>>          if (list instanceof RandomAccess) {
>>>              return new CheckedRandomAccessList(list, type);
>>>          } else {
>>> @@ -2317,7 +2323,7 @@
>>>       * 
>>>       * @return a typesafe set
>>>       */
>>> -    public static Set checkedSet(Set s, Class type) {
>>> +    public static <E> Set<E> checkedSet(Set<E> s, Class<E> type) {
>>>          return new CheckedSet(s, type);
>>>      }
>>>  
>>> @@ -2329,8 +2335,8 @@
>>>       * 
>>>       * @return a typesafe sorted map
>>>       */
>>> -    public static SortedMap checkedSortedMap(SortedMap m, Class keyType,
>>> -            Class valueType) {
>>> +    public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m, 
>>> Cl
>>> ass<K> keyType,
>>> +            Class<V> valueType) {
>>>          return new CheckedSortedMap(m, keyType, valueType);
>>>      }
>>>  
>>> @@ -2342,7 +2348,7 @@
>>>       * 
>>>       * @return a typesafe sorted set
>>>       */
>>> -    public static SortedSet checkedSortedSet(SortedSet s, Class type) {
>>> +    public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, 
>>> Class<E>
>>>  type) {
>>>          return new CheckedSortedSet(s, type);
>>>      }
>>>  
>>> @@ -2377,7 +2383,7 @@
>>>       * 
>>>       * @exception NullPointerException if one of the collections is null
>>>       */
>>> -    public static boolean disjoint(Collection c1, Collection c2) {
>>> +    public static boolean disjoint(Collection<?> c1, Collection<?> c2) {
>>>          if ((c1 instanceof Set) && !(c2 instanceof Set)
>>>                  || (c2.size()) > c1.size()) {
>>>              Collection tmp = c1;
>>>
>>
>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to