You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Geir Magnusson Jr <ge...@pobox.com> on 2006/06/09 10:17:26 UTC
Re: svn commit: r412928 - /incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Collections.java
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, ndbeyer@apache.org 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: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org
RE: [classlib] build failure
Posted by Nathan Beyer <nb...@kc.rr.com>.
Sorry about the build failure...just one little type variable, argh!
-Nathan
> -----Original Message-----
> From: Tim Ellison [mailto:t.p.ellison@gmail.com]
> Sent: Friday, June 09, 2006 5:20 AM
> To: harmony-dev@incubator.apache.org
> Subject: Re: [classlib] build failure
>
> Mikhail Loenko wrote:
> > I've not updated luni module yet. I'll stop further commits.
>
> It's fixed again -- so go mad.
>
> Regards,
> Tim
>
> > 2006/6/9, Tim Ellison <t....@gmail.com>:
> >> Yep, that was the plan, but it was a trivial fix (in repo >= r412990).
> >>
> >> Just wondering how Mikhail/Stepan got it to build? It may be a
> >> consequence of different compiler versions again since I did not see a
> >> compiler error on the Eclipse compiler either.
> >>
> >> Regards,
> >> Tim
> >>
> >> Geir Magnusson Jr wrote:
> >> > 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/Collectio
> ns.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, ndbeyer@apache.org 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: harmony-dev-
> unsubscribe@incubator.apache.org
> >> >>>> For additional commands, e-mail:
> >> harmony-dev-help@incubator.apache.org
> >> >>>>
> >> >>>>
> >> >>> -------------------------------------------------------------------
> --
> >> >>> Terms of use : http://incubator.apache.org/harmony/mailing.html
> >> >>> To unsubscribe, e-mail: harmony-dev-
> unsubscribe@incubator.apache.org
> >> >>> For additional commands, e-mail:
> >> harmony-dev-help@incubator.apache.org
> >> >>>
> >> >>>
> >> >
> >> > ---------------------------------------------------------------------
> >> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> >> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> >> > For additional commands, e-mail: harmony-dev-
> help@incubator.apache.org
> >> >
> >> >
> >>
> >> --
> >>
> >> Tim Ellison (t.p.ellison@gmail.com)
> >> IBM Java technology centre, UK.
> >>
> >> ---------------------------------------------------------------------
> >> Terms of use : http://incubator.apache.org/harmony/mailing.html
> >> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> >> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >
> >
>
> --
>
> Tim Ellison (t.p.ellison@gmail.com)
> IBM Java technology centre, UK.
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org
Re: [classlib] build failure
Posted by Tim Ellison <t....@gmail.com>.
Mikhail Loenko wrote:
> I've not updated luni module yet. I'll stop further commits.
It's fixed again -- so go mad.
Regards,
Tim
> 2006/6/9, Tim Ellison <t....@gmail.com>:
>> Yep, that was the plan, but it was a trivial fix (in repo >= r412990).
>>
>> Just wondering how Mikhail/Stepan got it to build? It may be a
>> consequence of different compiler versions again since I did not see a
>> compiler error on the Eclipse compiler either.
>>
>> Regards,
>> Tim
>>
>> Geir Magnusson Jr wrote:
>> > 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, ndbeyer@apache.org 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: harmony-dev-unsubscribe@incubator.apache.org
>> >>>> For additional commands, e-mail:
>> harmony-dev-help@incubator.apache.org
>> >>>>
>> >>>>
>> >>> ---------------------------------------------------------------------
>> >>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> >>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> >>> For additional commands, e-mail:
>> harmony-dev-help@incubator.apache.org
>> >>>
>> >>>
>> >
>> > ---------------------------------------------------------------------
>> > Terms of use : http://incubator.apache.org/harmony/mailing.html
>> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>> >
>> >
>>
>> --
>>
>> Tim Ellison (t.p.ellison@gmail.com)
>> IBM Java technology centre, UK.
>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>
--
Tim Ellison (t.p.ellison@gmail.com)
IBM Java technology centre, UK.
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org
Re: [classlib] build failure
Posted by Mikhail Loenko <ml...@gmail.com>.
I've not updated luni module yet. I'll stop further commits.
Thanks,
Mikhail
2006/6/9, Tim Ellison <t....@gmail.com>:
> Yep, that was the plan, but it was a trivial fix (in repo >= r412990).
>
> Just wondering how Mikhail/Stepan got it to build? It may be a
> consequence of different compiler versions again since I did not see a
> compiler error on the Eclipse compiler either.
>
> Regards,
> Tim
>
> Geir Magnusson Jr wrote:
> > 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, ndbeyer@apache.org 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: harmony-dev-unsubscribe@incubator.apache.org
> >>>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >>>>
> >>>>
> >>> ---------------------------------------------------------------------
> >>> Terms of use : http://incubator.apache.org/harmony/mailing.html
> >>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> >>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >>>
> >>>
> >
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >
> >
>
> --
>
> Tim Ellison (t.p.ellison@gmail.com)
> IBM Java technology centre, UK.
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org
Re: [classlib] build failure
Posted by Geir Magnusson Jr <ge...@pobox.com>.
I'll try it. I guess I have to rollback the rollback. :/
geir
Tim Ellison wrote:
> Yep, that was the plan, but it was a trivial fix (in repo >= r412990).
>
> Just wondering how Mikhail/Stepan got it to build? It may be a
> consequence of different compiler versions again since I did not see a
> compiler error on the Eclipse compiler either.
>
> Regards,
> Tim
>
> Geir Magnusson Jr wrote:
>> 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, ndbeyer@apache.org 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: harmony-dev-unsubscribe@incubator.apache.org
>>>>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>>>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>>>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>>>
>>>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>
>>
>
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org
Re: [classlib] build failure
Posted by Tim Ellison <t....@gmail.com>.
Yep, that was the plan, but it was a trivial fix (in repo >= r412990).
Just wondering how Mikhail/Stepan got it to build? It may be a
consequence of different compiler versions again since I did not see a
compiler error on the Eclipse compiler either.
Regards,
Tim
Geir Magnusson Jr wrote:
> 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, ndbeyer@apache.org 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: harmony-dev-unsubscribe@incubator.apache.org
>>>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>>
>>>
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>
--
Tim Ellison (t.p.ellison@gmail.com)
IBM Java technology centre, UK.
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org
Re: [classlib] build failure
Posted by Geir Magnusson Jr <ge...@pobox.com>.
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, ndbeyer@apache.org 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: harmony-dev-unsubscribe@incubator.apache.org
>>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>>
>>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>
>>
>
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org
[classlib] build failure (was: Re: svn commit: r412928 - /incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Collections.java)
Posted by Tim Ellison <t....@gmail.com>.
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, ndbeyer@apache.org 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: harmony-dev-unsubscribe@incubator.apache.org
>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>
--
Tim Ellison (t.p.ellison@gmail.com)
IBM Java technology centre, UK.
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org