If it isn't really quick, roll it back and let Nathan fix it...

geir

Tim Ellison wrote:
> 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]
>>
>>
> 

---------------------------------------------------------------------
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