1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util;
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Collection;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Collections;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Comparator;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Iterator;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.NavigableMap;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.NavigableSet;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.NoSuchElementException;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.SortedMap;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.SortedSet;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TreeMap;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map.Entry;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.luni.tests.java.util.TreeMapTest.MockComparator;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class TreeMapExtendTest extends TestCase {
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    TreeMap tm;
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    TreeMap tm_comparator;
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_default;
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_startExcluded_endExcluded;
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_startExcluded_endIncluded;
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_startIncluded_endExcluded;
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_startIncluded_endIncluded;
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_default_beforeStart_100;
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_default_afterEnd_109;
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    NavigableMap navigableMap_startExcluded_endExcluded;
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    NavigableMap navigableMap_startExcluded_endIncluded;
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    NavigableMap navigableMap_startIncluded_endExcluded;
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    NavigableMap navigableMap_startIncluded_endIncluded;
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_default_comparator;
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_startExcluded_endExcluded_comparator;
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_startExcluded_endIncluded_comparator;
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_startIncluded_endExcluded_comparator;
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    SortedMap subMap_startIncluded_endIncluded_comparator;
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    Object objArray[] = new Object[1000];
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_TreeMap_Constructor_Default() {
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap treeMap = new TreeMap();
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(treeMap.isEmpty());
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.comparator());
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, treeMap.size());
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            treeMap.firstKey();
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.firstEntry());
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            treeMap.lastKey();
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.lastEntry());
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            treeMap.ceilingKey(1);
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.ceilingEntry(1));
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            treeMap.floorKey(1);
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.floorEntry(1));
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.lowerKey(1));
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.lowerEntry(1));
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.higherKey(1));
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.higherEntry(1));
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(treeMap.containsKey(1));
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(treeMap.containsValue(1));
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.get(1));
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.pollFirstEntry());
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(treeMap.pollLastEntry());
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, treeMap.values().size());
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_TreeMap_Constructor_Comparator() {
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MockComparator mockComparator = new MockComparator();
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap treeMap = new TreeMap(mockComparator);
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(mockComparator, treeMap.comparator());
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_TreeMap_Constructor_Map() {
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap treeMap = new TreeMap(tm);
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.size(), treeMap.size());
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.firstKey(), treeMap.firstKey());
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.firstEntry(), treeMap.firstEntry());
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.lastKey(), treeMap.lastKey());
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.lastEntry(), treeMap.lastEntry());
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.keySet(), treeMap.keySet());
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(100).toString();
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.ceilingKey(key), treeMap.ceilingKey(key));
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.ceilingEntry(key), treeMap.ceilingEntry(key));
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.floorKey(key), treeMap.floorKey(key));
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.floorEntry(key), treeMap.floorEntry(key));
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.lowerKey(key), treeMap.lowerKey(key));
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.lowerEntry(key), treeMap.lowerEntry(key));
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.higherKey(key), treeMap.higherKey(key));
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.higherEntry(key), treeMap.higherEntry(key));
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.entrySet(), treeMap.entrySet());
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_TreeMap_Constructor_SortedMap() {
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap treeMap = new TreeMap(subMap_default);
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(subMap_default.size(), treeMap.size());
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(subMap_default.firstKey(), treeMap.firstKey());
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(subMap_default.lastKey(), treeMap.lastKey());
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(subMap_default.keySet(), treeMap.keySet());
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(subMap_default.entrySet(), treeMap.entrySet());
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_TreeMap_clear() {
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tm.clear();
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, tm.size());
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_TreeMap_clone() {
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap cloneTreeMap = (TreeMap) tm.clone();
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm, cloneTreeMap);
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_Constructor() {
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_clear() {
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default.clear();
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subMap_default.size());
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_comparator() {
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(tm.comparator(), subMap_default.comparator());
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_containsKey() {
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = null;
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int counter = 101; counter < 109; counter++) {
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = objArray[counter].toString();
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements", subMap_default
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .containsKey(key));
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startExcluded_endExcluded.containsKey(key));
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startExcluded_endIncluded.containsKey(key));
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startIncluded_endExcluded.containsKey(key));
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startIncluded_endIncluded.containsKey(key));
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Check boundary
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = objArray[100].toString();
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements", subMap_default
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .containsKey(key));
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endExcluded.containsKey(key));
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endIncluded.containsKey(key));
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endExcluded.containsKey(key));
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endIncluded.containsKey(key));
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = objArray[109].toString();
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements", subMap_default
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .containsKey(key));
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endExcluded.containsKey(key));
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endIncluded.containsKey(key));
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endExcluded.containsKey(key));
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endIncluded.containsKey(key));
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int counter = 101; counter < 109; counter++) {
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = objArray[counter].toString();
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_default_comparator.containsKey(key));
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startExcluded_endExcluded_comparator
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .containsKey(key));
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startExcluded_endIncluded_comparator
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .containsKey(key));
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startIncluded_endExcluded_comparator
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .containsKey(key));
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startIncluded_endIncluded_comparator
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .containsKey(key));
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Check boundary
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = objArray[100].toString();
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_default_comparator.containsKey(key));
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endExcluded_comparator.containsKey(key));
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endIncluded_comparator.containsKey(key));
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endExcluded_comparator.containsKey(key));
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endIncluded_comparator.containsKey(key));
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = objArray[109].toString();
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_default_comparator.containsKey(key));
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endExcluded_comparator.containsKey(key));
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endIncluded_comparator.containsKey(key));
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endExcluded_comparator.containsKey(key));
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endIncluded_comparator.containsKey(key));
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_containsValue() {
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Object value = null;
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int counter = 101; counter < 109; counter++) {
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = objArray[counter];
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements", subMap_default
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .containsValue(value));
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startExcluded_endExcluded.containsValue(value));
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startExcluded_endIncluded.containsValue(value));
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startIncluded_endExcluded.containsValue(value));
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("SubMap contains incorrect elements",
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap_startIncluded_endIncluded.containsValue(value));
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Check boundary
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = objArray[100];
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements", subMap_default
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .containsValue(value));
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endExcluded.containsValue(value));
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endIncluded.containsValue(value));
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endExcluded.containsValue(value));
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endIncluded.containsValue(value));
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = objArray[109];
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements", subMap_default
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .containsValue(value));
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endExcluded.containsValue(value));
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startExcluded_endIncluded.containsValue(value));
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("SubMap contains incorrect elements",
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endExcluded.containsValue(value));
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("SubMap contains incorrect elements",
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                subMap_startIncluded_endIncluded.containsValue(value));
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_default.containsValue(null));
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap tm_null = new TreeMap();
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tm_null.put("0", 1);
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tm_null.put("1", null);
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tm_null.put("2", 2);
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap = tm_null.subMap("0", "2");
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.containsValue(null));
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap.remove("1");
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap.containsValue(null));
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_entrySet() {
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = subMap_default.entrySet();
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.isEmpty());
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, entrySet.size());
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded.entrySet();
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.isEmpty());
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, entrySet.size());
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded.entrySet();
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.isEmpty());
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, entrySet.size());
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded.entrySet();
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.isEmpty());
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, entrySet.size());
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded.entrySet();
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.isEmpty());
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, entrySet.size());
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_firstKey() {
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String firstKey1 = new Integer(100).toString();
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String firstKey2 = new Integer(101).toString();
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, subMap_default.firstKey());
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey2, subMap_startExcluded_endExcluded.firstKey());
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey2, subMap_startExcluded_endIncluded.firstKey());
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, subMap_startIncluded_endExcluded.firstKey());
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, subMap_startIncluded_endIncluded.firstKey());
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.subMap(firstKey1, firstKey1).firstKey();
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.subMap(firstKey2, firstKey2)
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .firstKey();
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.subMap(firstKey2, firstKey2)
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .firstKey();
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.subMap(firstKey1, firstKey1)
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .firstKey();
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded.subMap(firstKey1, firstKey1)
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .firstKey();
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, subMap_default_comparator.firstKey());
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey2, subMap_startExcluded_endExcluded_comparator
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .firstKey());
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey2, subMap_startExcluded_endIncluded_comparator
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .firstKey());
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, subMap_startIncluded_endExcluded_comparator
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .firstKey());
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, subMap_startIncluded_endIncluded_comparator
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .firstKey());
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default_comparator.subMap(firstKey1, firstKey1).firstKey();
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded_comparator.subMap(firstKey2,
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    firstKey2).firstKey();
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded_comparator.subMap(firstKey2,
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    firstKey2).firstKey();
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded_comparator.subMap(firstKey1,
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    firstKey1).firstKey();
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded_comparator.subMap(firstKey1,
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    firstKey1).firstKey();
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_lastKey() {
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String lastKey1 = new Integer(108).toString();
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String lastKey2 = new Integer(109).toString();
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey1, subMap_default.lastKey());
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey1, subMap_startExcluded_endExcluded.lastKey());
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey2, subMap_startExcluded_endIncluded.lastKey());
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey1, subMap_startIncluded_endExcluded.lastKey());
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey2, subMap_startIncluded_endIncluded.lastKey());
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.subMap(lastKey1, lastKey1).lastKey();
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.subMap(lastKey1, lastKey1)
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .lastKey();
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.subMap(lastKey2, lastKey2)
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .lastKey();
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.subMap(lastKey1, lastKey1)
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .lastKey();
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded.subMap(lastKey2, lastKey2)
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .lastKey();
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey1, subMap_default_comparator.lastKey());
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey1, subMap_startExcluded_endExcluded_comparator
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .lastKey());
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey2, subMap_startExcluded_endIncluded_comparator
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .lastKey());
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey1, subMap_startIncluded_endExcluded_comparator
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .lastKey());
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(lastKey2, subMap_startIncluded_endIncluded_comparator
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .lastKey());
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default_comparator.subMap(lastKey1, lastKey1).lastKey();
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded_comparator.subMap(lastKey1,
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    lastKey1).lastKey();
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded_comparator.subMap(lastKey2,
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    lastKey2).lastKey();
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded_comparator.subMap(lastKey1,
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    lastKey1).lastKey();
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded_comparator.subMap(lastKey2,
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    lastKey2).lastKey();
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_get() {
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // left boundary
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value = new Integer(100);
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_default.get(value.toString()));
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, subMap_startExcluded_endExcluded.get(value
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, subMap_startExcluded_endIncluded.get(value
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_startIncluded_endExcluded.get(value
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_startIncluded_endIncluded.get(value
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // normal value
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(105);
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_default.get(value.toString()));
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_startExcluded_endExcluded.get(value
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_startExcluded_endIncluded.get(value
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_startIncluded_endExcluded.get(value
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_startIncluded_endIncluded.get(value
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // right boundary
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, subMap_default.get(value.toString()));
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, subMap_startExcluded_endExcluded.get(value
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_startExcluded_endIncluded.get(value
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, subMap_startIncluded_endExcluded.get(value
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_startIncluded_endIncluded.get(value
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator to test inInRange
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // left boundary
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(100);
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_default_comparator.get(value.toString()));
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // normal value
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(105);
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, subMap_default_comparator.get(value.toString()));
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // right boundary
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, subMap_default_comparator.get(value.toString()));
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_headMap() {
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(99).toString();
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.headMap(endKey);
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.headMap(endKey);
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.headMap(endKey);
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.headMap(endKey);
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded.headMap(endKey);
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap headMap = null;
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_default.headMap(endKey);
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startExcluded_endExcluded.headMap(endKey);
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startExcluded_endIncluded.headMap(endKey);
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startIncluded_endExcluded.headMap(endKey);
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startIncluded_endIncluded.headMap(endKey);
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101; i < 8; i++) {
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i + j).toString();
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_default.headMap(endKey);
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, headMap.size());
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_startExcluded_endExcluded.headMap(endKey);
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, headMap.size());
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_startExcluded_endIncluded.headMap(endKey);
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, headMap.size());
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_startIncluded_endExcluded.headMap(endKey);
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, headMap.size());
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_startIncluded_endIncluded.headMap(endKey);
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, headMap.size());
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_default.headMap(endKey);
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, headMap.size());
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startExcluded_endExcluded.headMap(endKey);
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, headMap.size());
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startExcluded_endIncluded.headMap(endKey);
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, headMap.size());
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startIncluded_endExcluded.headMap(endKey);
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, headMap.size());
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startIncluded_endIncluded.headMap(endKey);
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, headMap.size());
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.headMap(endKey);
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.headMap(endKey);
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.headMap(endKey);
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.headMap(endKey);
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded.headMap(endKey);
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default_comparator.headMap(endKey);
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded_comparator.headMap(endKey);
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded_comparator.headMap(endKey);
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded_comparator.headMap(endKey);
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded_comparator.headMap(endKey);
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = null;
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_default_comparator.headMap(endKey);
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startExcluded_endExcluded_comparator.headMap(endKey);
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startExcluded_endIncluded_comparator.headMap(endKey);
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startIncluded_endExcluded_comparator.headMap(endKey);
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startIncluded_endIncluded_comparator.headMap(endKey);
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, headMap.size());
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101; i < 8; i++) {
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i + j).toString();
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_default_comparator.headMap(endKey);
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, headMap.size());
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_startExcluded_endExcluded_comparator
782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .headMap(endKey);
783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, headMap.size());
784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_startExcluded_endIncluded_comparator
786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .headMap(endKey);
787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, headMap.size());
788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_startIncluded_endExcluded_comparator
790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .headMap(endKey);
791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, headMap.size());
792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headMap = subMap_startIncluded_endIncluded_comparator
794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .headMap(endKey);
795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, headMap.size());
796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_default_comparator.headMap(endKey);
800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, headMap.size());
801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startExcluded_endExcluded_comparator.headMap(endKey);
803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(7, headMap.size());
804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startExcluded_endIncluded_comparator.headMap(endKey);
806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(7, headMap.size());
807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startIncluded_endExcluded_comparator.headMap(endKey);
809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, headMap.size());
810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headMap = subMap_startIncluded_endIncluded_comparator.headMap(endKey);
812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, headMap.size());
813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default_comparator.headMap(endKey);
817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded_comparator.headMap(endKey);
824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded_comparator.headMap(endKey);
831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded_comparator.headMap(endKey);
838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded_comparator.headMap(endKey);
845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_isEmpty() {
852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_default.isEmpty());
853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startExcluded_endExcluded.isEmpty());
854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startExcluded_endIncluded.isEmpty());
855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startIncluded_endExcluded.isEmpty());
856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startIncluded_endIncluded.isEmpty());
857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Object startKey = new Integer(100);
859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Object endKey = startKey;
860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap = tm.subMap(startKey.toString(), endKey.toString());
861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.isEmpty());
862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = subMap_default.subMap(startKey.toString(), endKey.toString());
863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.isEmpty());
864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = subMap_startIncluded_endExcluded.subMap(startKey.toString(),
865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endKey.toString());
866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.isEmpty());
867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = subMap_startIncluded_endIncluded.subMap(startKey.toString(),
868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endKey.toString());
869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.isEmpty());
870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101; i < 8; i++) {
872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = i + j;
873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = startKey;
874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_default.subMap(startKey.toString(), endKey
876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString());
877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subMap.isEmpty());
878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_startExcluded_endExcluded.subMap(startKey
880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), endKey.toString());
881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subMap.isEmpty());
882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_startExcluded_endIncluded.subMap(startKey
884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), endKey.toString());
885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subMap.isEmpty());
886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_startIncluded_endExcluded.subMap(startKey
888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), endKey.toString());
889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subMap.isEmpty());
890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_startIncluded_endIncluded.subMap(startKey
892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), endKey.toString());
893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subMap.isEmpty());
894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101; i < 5; i++) {
897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = i + j;
898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = i + j + 4;
899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_default.subMap(startKey.toString(), endKey
901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString());
902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(subMap.isEmpty());
903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_startExcluded_endExcluded.subMap(startKey
905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), endKey.toString());
906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(subMap.isEmpty());
907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_startExcluded_endIncluded.subMap(startKey
909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), endKey.toString());
910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(subMap.isEmpty());
911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_startIncluded_endExcluded.subMap(startKey
913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), endKey.toString());
914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(subMap.isEmpty());
915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap = subMap_startIncluded_endIncluded.subMap(startKey
917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), endKey.toString());
918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(subMap.isEmpty());
919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = startKey;
923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey.toString(), endKey.toString());
924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.isEmpty());
925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = subMap_startExcluded_endIncluded.subMap(startKey, endKey);
926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.isEmpty());
927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = subMap_startIncluded_endIncluded.subMap(startKey, endKey);
928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.isEmpty());
929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_keySet() {
933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set keySet = subMap_default.keySet();
934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.isEmpty());
935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endExcluded.entrySet();
938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.isEmpty());
939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, keySet.size());
940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endIncluded.entrySet();
942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.isEmpty());
943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endExcluded.entrySet();
946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.isEmpty());
947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endIncluded.entrySet();
950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.isEmpty());
951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, keySet.size());
952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_put() {
955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value = new Integer(100);
956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int addValue = 5;
957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default.put(value.toString(), value + addValue);
959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value + addValue, subMap_default.get(value.toString()));
960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.put(value.toString(), value
963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + addValue);
964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.put(value.toString(), value
971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + addValue);
972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endExcluded
978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .put(value.toString(), value + addValue);
979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value + addValue, subMap_startIncluded_endExcluded
980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(value.toString()));
981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endIncluded
983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .put(value.toString(), value + addValue);
984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value + addValue, subMap_startIncluded_endIncluded
985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(value.toString()));
986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.put(value.toString(), value + addValue);
990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.put(value.toString(), value
997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + addValue);
998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endIncluded
1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .put(value.toString(), value + addValue);
1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value + addValue, subMap_startExcluded_endIncluded
1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(value.toString()));
1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.put(value.toString(), value
1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + addValue);
1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endIncluded
1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .put(value.toString(), value + addValue);
1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value + addValue, subMap_startIncluded_endIncluded
1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .get(value.toString()));
1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_remove() {
1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value = new Integer(100);
1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default.remove(value.toString());
1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_default.get(value.toString()));
1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endExcluded.remove(value.toString());
1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startExcluded_endExcluded.get(value.toString()));
1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endIncluded.remove(value.toString());
1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startExcluded_endIncluded.get(value.toString()));
1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endExcluded.remove(value.toString());
1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startIncluded_endExcluded.get(value.toString()));
1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endIncluded.remove(value.toString());
1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startIncluded_endIncluded.get(value.toString()));
1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default.remove(value.toString());
1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_default.get(value.toString()));
1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endExcluded.remove(value.toString());
1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startExcluded_endExcluded.get(value.toString()));
1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endIncluded.remove(value.toString());
1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startExcluded_endIncluded.get(value.toString()));
1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endExcluded.remove(value.toString());
1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startIncluded_endExcluded.get(value.toString()));
1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endIncluded.remove(value.toString());
1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startIncluded_endIncluded.get(value.toString()));
1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_subMap_NoComparator() {
1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer[100].toString();
1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer[100].toString();
1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.subMap(startKey, endKey);
1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.subMap(startKey, endKey);
1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.subMap(startKey, endKey);
1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.subMap(startKey, endKey);
1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded.subMap(startKey, endKey);
1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subSubMap = null;
1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = startKey;
1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_default.subMap(startKey, endKey);
1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startExcluded_endExcluded.subMap(startKey,
1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endKey);
1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startExcluded_endIncluded.subMap(startKey,
1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endKey);
1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startIncluded_endExcluded.subMap(startKey,
1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endKey);
1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startIncluded_endIncluded.subMap(startKey,
1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endKey);
1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101, j = 5; i < 105; i++) {
1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i + j).toString();
1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_default.subMap(startKey, endKey);
1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startExcluded_endExcluded.subMap(startKey,
1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endKey);
1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startExcluded_endIncluded.subMap(startKey,
1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endKey);
1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startIncluded_endExcluded.subMap(startKey,
1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endKey);
1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startIncluded_endIncluded.subMap(startKey,
1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endKey);
1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(108).toString();
1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_default.subMap(startKey, endKey);
1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startExcluded_endExcluded.subMap(startKey, endKey);
1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startExcluded_endIncluded.subMap(startKey, endKey);
1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startIncluded_endExcluded.subMap(startKey, endKey);
1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startIncluded_endIncluded.subMap(startKey, endKey);
1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.subMap(startKey, endKey);
1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.subMap(startKey, endKey);
1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startExcluded_endIncluded.subMap(startKey, endKey);
1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subSubMap.size());
1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.subMap(startKey, endKey);
1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startIncluded_endIncluded.subMap(startKey, endKey);
1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subSubMap.size());
1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_subMap_Comparator() {
1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer[100].toString();
1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer[100].toString();
1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default_comparator.subMap(startKey, endKey);
1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded_comparator
1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .subMap(startKey, endKey);
1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded_comparator
1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .subMap(startKey, endKey);
1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded_comparator
1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .subMap(startKey, endKey);
1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded_comparator
1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .subMap(startKey, endKey);
1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subSubMap = null;
1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = startKey;
1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_default_comparator.subMap(startKey, endKey);
1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startExcluded_endExcluded_comparator.subMap(
1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    startKey, endKey);
1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startExcluded_endIncluded_comparator.subMap(
1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    startKey, endKey);
1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startIncluded_endExcluded_comparator.subMap(
1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    startKey, endKey);
1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startIncluded_endIncluded_comparator.subMap(
1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    startKey, endKey);
1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, subSubMap.size());
1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101, j = 5; i < 105; i++) {
1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i + j).toString();
1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_default_comparator.subMap(startKey, endKey);
1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startExcluded_endExcluded_comparator.subMap(
1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    startKey, endKey);
1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startExcluded_endIncluded_comparator.subMap(
1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    startKey, endKey);
1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startIncluded_endExcluded_comparator.subMap(
1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    startKey, endKey);
1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSubMap = subMap_startIncluded_endIncluded_comparator.subMap(
1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    startKey, endKey);
1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(j, subSubMap.size());
1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(108).toString();
1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_default_comparator.subMap(startKey, endKey);
1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startExcluded_endExcluded_comparator.subMap(
1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                startKey, endKey);
1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startExcluded_endIncluded_comparator.subMap(
1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                startKey, endKey);
1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startIncluded_endExcluded_comparator.subMap(
1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                startKey, endKey);
1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startIncluded_endIncluded_comparator.subMap(
1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                startKey, endKey);
1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSubMap.size());
1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default_comparator.subMap(startKey, endKey);
1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded_comparator
1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .subMap(startKey, endKey);
1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startExcluded_endIncluded_comparator.subMap(
1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                startKey, endKey);
1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subSubMap.size());
1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded_comparator
1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .subMap(startKey, endKey);
1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSubMap = subMap_startIncluded_endIncluded_comparator.subMap(
1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                startKey, endKey);
1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subSubMap.size());
1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_tailMap() {
1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(99).toString();
1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.tailMap(startKey);
1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.tailMap(startKey);
1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.tailMap(startKey);
1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.tailMap(startKey);
1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded.tailMap(startKey);
1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap tailMap = null;
1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailMap = subMap_default.tailMap(startKey);
1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, tailMap.size());
1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.tailMap(startKey);
1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.tailMap(startKey);
1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailMap = subMap_startIncluded_endExcluded.tailMap(startKey);
1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, tailMap.size());
1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailMap = subMap_startIncluded_endIncluded.tailMap(startKey);
1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, tailMap.size());
1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101, end = 8; i < end; i++) {
1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i + j).toString();
1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailMap = subMap_default.tailMap(startKey);
1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(end - i, tailMap.size());
1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailMap = subMap_startExcluded_endExcluded.tailMap(startKey);
1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(end - i, tailMap.size());
1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailMap = subMap_startExcluded_endIncluded.tailMap(startKey);
1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(end - i + 1, tailMap.size());
1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailMap = subMap_startIncluded_endExcluded.tailMap(startKey);
1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(end - i, tailMap.size());
1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailMap = subMap_startIncluded_endIncluded.tailMap(startKey);
1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(end - i + 1, tailMap.size());
1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.tailMap(startKey);
1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.tailMap(startKey);
1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailMap = subMap_startExcluded_endIncluded.tailMap(startKey);
1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, tailMap.size());
1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.tailMap(startKey);
1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailMap = subMap_startIncluded_endIncluded.tailMap(startKey);
1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, tailMap.size());
1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_default.tailMap(startKey);
1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded.tailMap(startKey);
1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endIncluded.tailMap(startKey);
1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endExcluded.tailMap(startKey);
1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startIncluded_endIncluded.tailMap(startKey);
1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_values() {
1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collection values = subMap_default.values();
1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(100));
1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(109));
1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = subMap_startExcluded_endExcluded.values();
1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(100));
1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(109));
1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = subMap_startExcluded_endIncluded.values();
1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(100));
1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
1505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(109));
1507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = subMap_startIncluded_endExcluded.values();
1509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
1510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(100));
1511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
1513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(109));
1515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = subMap_startIncluded_endIncluded.values();
1517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
1518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(100));
1519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 100; i < 109; i++) {
1520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
1521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(109));
1523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_size() {
1526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_default.size());
1527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, subMap_startExcluded_endExcluded.size());
1528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_startExcluded_endIncluded.size());
1529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_startIncluded_endExcluded.size());
1530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, subMap_startIncluded_endIncluded.size());
1531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_default_comparator.size());
1533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, subMap_startExcluded_endExcluded_comparator.size());
1534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_startExcluded_endIncluded_comparator.size());
1535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_startIncluded_endExcluded_comparator.size());
1536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, subMap_startIncluded_endIncluded_comparator.size());
1537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMap_readObject() throws Exception {
1540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // SerializationTest.verifySelf(subMap_default);
1541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // SerializationTest.verifySelf(subMap_startExcluded_endExcluded);
1542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // SerializationTest.verifySelf(subMap_startExcluded_endIncluded);
1543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // SerializationTest.verifySelf(subMap_startIncluded_endExcluded);
1544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // SerializationTest.verifySelf(subMap_startIncluded_endIncluded);
1545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMap_ceilingEntry() {
1548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(99).toString();
1549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startExcluded_endExcluded.ceilingEntry(key));
1550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startExcluded_endIncluded.ceilingEntry(key));
1551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startIncluded_endExcluded.ceilingEntry(key));
1552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startIncluded_endIncluded.ceilingEntry(key));
1553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, navigableMap_startExcluded_endExcluded.ceilingEntry(
1556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key).getValue());
1557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, navigableMap_startExcluded_endIncluded.ceilingEntry(
1558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key).getValue());
1559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, navigableMap_startIncluded_endExcluded.ceilingEntry(
1560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key).getValue());
1561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, navigableMap_startIncluded_endIncluded.ceilingEntry(
1562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key).getValue());
1563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, navigableMap_startExcluded_endExcluded
1567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .ceilingEntry(key).getValue());
1568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, navigableMap_startExcluded_endIncluded
1569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .ceilingEntry(key).getValue());
1570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, navigableMap_startIncluded_endExcluded
1571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .ceilingEntry(key).getValue());
1572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, navigableMap_startIncluded_endIncluded
1573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .ceilingEntry(key).getValue());
1574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startExcluded_endExcluded.ceilingEntry(key));
1579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startExcluded_endIncluded.ceilingEntry(
1580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key).getValue());
1581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startIncluded_endExcluded.ceilingEntry(key));
1582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startIncluded_endIncluded.ceilingEntry(
1583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key).getValue());
1584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(110).toString();
1586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startExcluded_endExcluded.ceilingEntry(key));
1587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startExcluded_endIncluded.ceilingEntry(key));
1588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startIncluded_endExcluded.ceilingEntry(key));
1589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startIncluded_endIncluded.ceilingEntry(key));
1590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMap_descendingMap() {
1593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap descendingMap = navigableMap_startExcluded_endExcluded
1594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
1595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endExcluded.size(),
1596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.size());
1597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(descendingMap.comparator());
1598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endExcluded.firstKey(),
1600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.lastKey());
1601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endExcluded.firstEntry(),
1602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.lastEntry());
1603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endExcluded.lastKey(),
1605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.firstKey());
1606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endExcluded.lastEntry(),
1607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.firstEntry());
1608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
1610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endIncluded.size(),
1611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.size());
1612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(descendingMap.comparator());
1613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endIncluded.firstKey(),
1615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.lastKey());
1616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endIncluded.firstEntry(),
1617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.lastEntry());
1618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endIncluded.lastKey(),
1620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.firstKey());
1621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startExcluded_endIncluded.lastEntry(),
1622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.firstEntry());
1623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
1625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endExcluded.size(),
1626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.size());
1627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(descendingMap.comparator());
1628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endExcluded.firstKey(),
1630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.lastKey());
1631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endExcluded.firstEntry(),
1632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.lastEntry());
1633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endExcluded.lastKey(),
1635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.firstKey());
1636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endExcluded.lastEntry(),
1637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.firstEntry());
1638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
1640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endIncluded.size(),
1641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.size());
1642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(descendingMap.comparator());
1643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endIncluded.firstKey(),
1645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.lastKey());
1646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endIncluded.firstEntry(),
1647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.lastEntry());
1648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endIncluded.lastKey(),
1650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.firstKey());
1651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(navigableMap_startIncluded_endIncluded.lastEntry(),
1652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingMap.firstEntry());
1653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMap_floorEntry() {
1656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(99).toString();
1657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, navigableMap_startExcluded_endExcluded
1658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startExcluded_endIncluded
1660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, navigableMap_startIncluded_endExcluded
1662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startIncluded_endIncluded
1664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startExcluded_endExcluded.floorEntry(key));
1668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(navigableMap_startExcluded_endIncluded.floorEntry(key));
1669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, navigableMap_startIncluded_endExcluded
1670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, navigableMap_startIncluded_endIncluded
1672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, navigableMap_startExcluded_endExcluded.floorEntry(
1677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    key).getValue());
1678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, navigableMap_startExcluded_endIncluded.floorEntry(
1679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    key).getValue());
1680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, navigableMap_startIncluded_endExcluded.floorEntry(
1681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    key).getValue());
1682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, navigableMap_startIncluded_endIncluded.floorEntry(
1683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    key).getValue());
1684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, navigableMap_startExcluded_endExcluded
1689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startExcluded_endIncluded
1691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, navigableMap_startIncluded_endExcluded
1693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startIncluded_endIncluded
1695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(110).toString();
1698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, navigableMap_startExcluded_endExcluded
1699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startExcluded_endIncluded
1701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, navigableMap_startIncluded_endExcluded
1703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startIncluded_endIncluded
1705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floorEntry(key).getValue());
1706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMap_pollFirstEntry() {
1709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, navigableMap_startExcluded_endExcluded
1710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .pollFirstEntry().getValue());
1711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(102, navigableMap_startExcluded_endIncluded
1712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .pollFirstEntry().getValue());
1713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, navigableMap_startIncluded_endExcluded
1714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .pollFirstEntry().getValue());
1715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(103, navigableMap_startIncluded_endIncluded
1716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .pollFirstEntry().getValue());
1717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMap_pollLastEntry() {
1720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, navigableMap_startExcluded_endExcluded
1721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .pollLastEntry().getValue());
1722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, navigableMap_startExcluded_endIncluded
1723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .pollLastEntry().getValue());
1724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(107, navigableMap_startIncluded_endExcluded
1725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .pollLastEntry().getValue());
1726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(106, navigableMap_startIncluded_endIncluded
1727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .pollLastEntry().getValue());
1728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMap_entrySet() {
1731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, navigableMap_startExcluded_endExcluded.entrySet()
1732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .size());
1733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, navigableMap_startExcluded_endIncluded.entrySet()
1734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .size());
1735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, navigableMap_startIncluded_endExcluded.entrySet()
1736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .size());
1737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, navigableMap_startIncluded_endIncluded.entrySet()
1738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .size());
1739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMap_subMap() {
1742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
1743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry startEntry, endEntry;
1744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int startIndex, endIndex;
1745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap;
1746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator subMapSetIterator;
1747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
1749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator startIterator = entrySet.iterator();
1750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (startIterator.hasNext()) {
1751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startEntry = (Entry) startIterator.next();
1752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startIndex = (Integer) startEntry.getValue();
1753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator endIterator = entrySet.iterator();
1754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (endIterator.hasNext()) {
1755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endEntry = (Entry) endIterator.next();
1756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endIndex = (Integer) endEntry.getValue();
1757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (startIndex > endIndex) {
1759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
1760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        navigableMap_startExcluded_endExcluded.subMap(
1761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                startEntry.getKey(), endEntry.getKey());
1762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
1763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
1764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
1765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
1767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        navigableMap_startExcluded_endExcluded.subMap(
1768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                startEntry.getKey(), false, endEntry.getKey(),
1769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                false);
1770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
1771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
1772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
1773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
1775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        navigableMap_startExcluded_endExcluded.subMap(
1776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                startEntry.getKey(), false, endEntry.getKey(),
1777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                true);
1778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
1779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
1780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
1781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
1783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        navigableMap_startExcluded_endExcluded.subMap(
1784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                startEntry.getKey(), true, endEntry.getKey(),
1785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                false);
1786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
1787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
1788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
1789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
1791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        navigableMap_startExcluded_endExcluded.subMap(
1792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                startEntry.getKey(), true, endEntry.getKey(),
1793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                true);
1794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
1795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
1796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
1797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
1799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap = navigableMap_startExcluded_endExcluded.subMap(
1800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            startEntry.getKey(), endEntry.getKey());
1801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMapSetIterator = subMap.entrySet().iterator();
1802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; index < endIndex; index++) {
1803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(index, ((Entry) subMapSetIterator.next())
1804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getValue());
1805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap = navigableMap_startExcluded_endExcluded.subMap(
1808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            startEntry.getKey(), false, endEntry.getKey(),
1809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            false);
1810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMapSetIterator = subMap.entrySet().iterator();
1811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex + 1; index < endIndex; index++) {
1812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(index, ((Entry) subMapSetIterator.next())
1813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getValue());
1814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap = navigableMap_startExcluded_endExcluded
1817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .subMap(startEntry.getKey(), false, endEntry
1818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getKey(), true);
1819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMapSetIterator = subMap.entrySet().iterator();
1820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex + 1; index < endIndex; index++) {
1821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(index, ((Entry) subMapSetIterator.next())
1822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getValue());
1823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap = navigableMap_startExcluded_endExcluded
1826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .subMap(startEntry.getKey(), true, endEntry
1827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getKey(), false);
1828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMapSetIterator = subMap.entrySet().iterator();
1829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; index < endIndex; index++) {
1830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(index, ((Entry) subMapSetIterator.next())
1831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getValue());
1832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMap = navigableMap_startExcluded_endExcluded.subMap(
1835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            startEntry.getKey(), true, endEntry.getKey(), true);
1836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subMapSetIterator = subMap.entrySet().iterator();
1837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; index <= endIndex; index++) {
1838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(index, ((Entry) subMapSetIterator.next())
1839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getValue());
1840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_ceilingEntry() {
1847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
1848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(-1).toString();
1849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.ceilingEntry(key));
1850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < objArray.length; i++) {
1851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = objArray[i].toString();
1852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(objArray[i], decendingMap.ceilingEntry(key).getValue());
1853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1000).toString();
1855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1001).toString();
1857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
1860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.ceilingEntry(key));
1862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, decendingMap.ceilingEntry(key).getValue());
1868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
1870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.ceilingEntry(key));
1872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.ceilingEntry(key).getValue());
1878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
1880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, decendingMap.ceilingEntry(key).getValue());
1888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
1890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.ceilingEntry(key).getValue());
1898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
1900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
1901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
1902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.ceilingEntry(key));
1904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, decendingMap.ceilingEntry(key).getValue());
1910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
1912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
1913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.ceilingEntry(key));
1915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.ceilingEntry(key).getValue());
1921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
1923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
1924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, decendingMap.ceilingEntry(key).getValue());
1932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
1934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
1935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
1936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
1938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
1939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
1942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.ceilingEntry(key).getValue());
1943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_descendingMap() {
1946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
1947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingDecendingMap = decendingMap.descendingMap();
1948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMap, decendingDecendingMap);
1949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMapHeadMap = decendingMap.headMap(
1951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new Integer(990).toString(), false);
1952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingDecendingHeadMap = decendingMapHeadMap
1953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
1954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(decendingMapHeadMap);
1955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(decendingDecendingHeadMap);
1956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
1957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMapTailMap = decendingMap.tailMap(
1959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new Integer(990).toString(), false);
1960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingDecendingTailMap = decendingMapTailMap
1961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
1962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(decendingMapTailMap);
1963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(decendingDecendingTailMap);
1964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertEquals(decendingMapTailMap,decendingDecendingTailMap);
1965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
1967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingMap = decendingMap.descendingMap();
1968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMap, decendingDecendingMap);
1969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMapHeadMap = decendingMap.headMap(new Integer(104).toString(),
1971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
1972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingHeadMap = decendingMapHeadMap.descendingMap();
1973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
1974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMapTailMap = decendingMap.tailMap(new Integer(104).toString(),
1976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
1977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingTailMap = decendingMapTailMap.descendingMap();
1978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapTailMap, decendingDecendingTailMap);
1979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
1981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingMap = decendingMap.descendingMap();
1982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMap, decendingDecendingMap);
1983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMapHeadMap = decendingMap.headMap(new Integer(104).toString(),
1985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
1986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingHeadMap = decendingMapHeadMap.descendingMap();
1987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
1988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMapTailMap = decendingMap.tailMap(new Integer(104).toString(),
1990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
1991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingTailMap = decendingMapTailMap.descendingMap();
1992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapTailMap, decendingDecendingTailMap);
1993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
1995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingMap = decendingMap.descendingMap();
1996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMap, decendingDecendingMap);
1997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMapHeadMap = decendingMap.headMap(new Integer(104).toString(),
1999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingHeadMap = decendingMapHeadMap.descendingMap();
2001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
2002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMapTailMap = decendingMap.tailMap(new Integer(104).toString(),
2004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingTailMap = decendingMapTailMap.descendingMap();
2006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapTailMap, decendingDecendingTailMap);
2007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingMap = decendingMap.descendingMap();
2010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMap, decendingDecendingMap);
2011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMapHeadMap = decendingMap.headMap(new Integer(104).toString(),
2013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingHeadMap = decendingMapHeadMap.descendingMap();
2015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
2016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMapTailMap = decendingMap.tailMap(new Integer(104).toString(),
2018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingDecendingTailMap = decendingMapTailMap.descendingMap();
2020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(decendingMapTailMap, decendingDecendingTailMap);
2021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_firstEntry() {
2024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
2025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(999, decendingMap.firstEntry().getValue());
2026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, decendingMap.firstEntry().getValue());
2029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.firstEntry().getValue());
2032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, decendingMap.firstEntry().getValue());
2035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.firstEntry().getValue());
2038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_floorEntry() {
2041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
2042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(-1).toString();
2043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, decendingMap.floorEntry(key).getValue());
2044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < objArray.length; i++) {
2045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = objArray[i].toString();
2046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(objArray[i], decendingMap.floorEntry(key).getValue());
2047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1000).toString();
2049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.floorEntry(key).getValue());
2050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1001).toString();
2051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.floorEntry(key).getValue());
2052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.floorEntry(key).getValue());
2056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.floorEntry(key).getValue());
2059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.floorEntry(key));
2062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.floorEntry(key).getValue());
2066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.floorEntry(key).getValue());
2069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.floorEntry(key).getValue());
2072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.floorEntry(key).getValue());
2076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.floorEntry(key).getValue());
2079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.floorEntry(key));
2082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.floorEntry(key).getValue());
2086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.floorEntry(key).getValue());
2089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.floorEntry(key).getValue());
2092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
2094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
2095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
2096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.floorEntry(key).getValue());
2098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.floorEntry(key).getValue());
2101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.floorEntry(key));
2104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
2106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
2107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.floorEntry(key).getValue());
2109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.floorEntry(key).getValue());
2112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.floorEntry(key).getValue());
2115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
2117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
2118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.floorEntry(key).getValue());
2120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.floorEntry(key).getValue());
2123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.floorEntry(key));
2126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
2128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
2129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.floorEntry(key).getValue());
2131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, decendingMap.floorEntry(key).getValue());
2134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.floorEntry(key).getValue());
2137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_lastEntry() {
2140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
2141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, decendingMap.lastEntry().getValue());
2142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.lastEntry().getValue());
2145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.lastEntry().getValue());
2148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.lastEntry().getValue());
2151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.lastEntry().getValue());
2154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_higherEntry() {
2157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap;
2158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingTailMap;
2159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value;
2160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
2161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(101);
2163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.higherEntry(value.toString()));
2164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 108; i > 101; i--) {
2166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingMap.higherEntry(value.toString());
2168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value - 1, entry.getValue());
2169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingMap.higherEntry(value.toString());
2173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, entry.getValue());
2174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingTailMap = decendingMap.tailMap(new Integer(104).toString(),
2176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingTailMap.higherEntry(value.toString());
2179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(103, entry.getValue());
2180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(100);
2183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.higherEntry(value.toString()));
2184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 108; i > 100; i--) {
2186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingMap.higherEntry(value.toString());
2188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value - 1, entry.getValue());
2189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingMap.higherEntry(value.toString());
2193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, entry.getValue());
2194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingTailMap = decendingMap.tailMap(new Integer(104).toString(),
2196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingTailMap.higherEntry(value.toString());
2199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(103, entry.getValue());
2200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(101);
2203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.higherEntry(value.toString()));
2204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 109; i > 101; i--) {
2206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingMap.higherEntry(value.toString());
2208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value - 1, entry.getValue());
2209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(2);
2212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingMap.higherEntry(value.toString());
2213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, entry.getValue());
2214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingTailMap = decendingMap.tailMap(new Integer(104).toString(),
2216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingTailMap.higherEntry(value.toString());
2219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(103, entry.getValue());
2220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(100);
2223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.higherEntry(value.toString()));
2224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 109; i > 100; i--) {
2226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingMap.higherEntry(value.toString());
2228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value - 1, entry.getValue());
2229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(2);
2232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingMap.higherEntry(value.toString());
2233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, entry.getValue());
2234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingTailMap = decendingMap.tailMap(new Integer(104).toString(),
2236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingTailMap.higherEntry(value.toString());
2239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(103, entry.getValue());
2240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_lowerEntry() {
2243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap;
2244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingHeadMap;
2245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value;
2246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
2247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(99);
2249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.lowerEntry(value.toString()));
2250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 100; i < 108; i++) {
2251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingMap.lowerEntry(value.toString());
2253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
2254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.lowerEntry(value.toString()));
2257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingHeadMap = decendingMap.headMap(new Integer(103).toString(),
2259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 104; i < 106; i++) {
2261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingHeadMap.lowerEntry(value.toString());
2263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
2264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(102);
2266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingHeadMap.lowerEntry(value.toString());
2267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(104, entry.getValue());
2268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingHeadMap.lowerEntry(value.toString());
2271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(entry);
2272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(99);
2275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.lowerEntry(value.toString()));
2276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 100; i < 109; i++) {
2277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingMap.lowerEntry(value.toString());
2279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
2280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(110);
2282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.lowerEntry(value.toString()));
2283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingHeadMap = decendingMap.headMap(new Integer(103).toString(),
2285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 104; i < 109; i++) {
2287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingHeadMap.lowerEntry(value.toString());
2289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
2290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(102);
2292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingHeadMap.lowerEntry(value.toString());
2293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(104, entry.getValue());
2294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(2);
2296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingHeadMap.lowerEntry(value.toString());
2297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(entry);
2298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(99);
2301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.lowerEntry(value.toString()));
2302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 100; i < 108; i++) {
2303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingMap.lowerEntry(value.toString());
2305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
2306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(109);
2308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.lowerEntry(value.toString()));
2309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingHeadMap = decendingMap.headMap(new Integer(103).toString(),
2311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 104; i < 107; i++) {
2313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingHeadMap.lowerEntry(value.toString());
2315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
2316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(102);
2318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingHeadMap.lowerEntry(value.toString());
2319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(104, entry.getValue());
2320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(2);
2322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingHeadMap.lowerEntry(value.toString());
2323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(entry);
2324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(99);
2327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.lowerEntry(value.toString()));
2328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 100; i < 109; i++) {
2329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingMap.lowerEntry(value.toString());
2331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
2332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(110);
2334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(decendingMap.lowerEntry(value.toString()));
2335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingHeadMap = decendingMap.headMap(new Integer(103).toString(),
2337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
2338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 104; i < 109; i++) {
2339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
2340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = decendingHeadMap.lowerEntry(value.toString());
2341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
2342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(102);
2344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingHeadMap.lowerEntry(value.toString());
2345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(104, entry.getValue());
2346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(2);
2348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entry = decendingHeadMap.lowerEntry(value.toString());
2349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(entry);
2350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_pollFirstEntry() {
2353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
2354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(999, decendingMap.pollFirstEntry().getValue());
2355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, decendingMap.pollFirstEntry().getValue());
2358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, decendingMap.pollFirstEntry().getValue());
2361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(107, decendingMap.pollFirstEntry().getValue());
2364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(106, decendingMap.pollFirstEntry().getValue());
2367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_pollLastEntry() {
2370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
2371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, decendingMap.pollLastEntry().getValue());
2372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, decendingMap.pollLastEntry().getValue());
2375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(102, decendingMap.pollLastEntry().getValue());
2378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, decendingMap.pollLastEntry().getValue());
2381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(103, decendingMap.pollLastEntry().getValue());
2384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_values() {
2387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
2388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collection values = decendingMap.values();
2389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
2390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(1000));
2391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 999; i > 0; i--) {
2392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
2393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(0));
2395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(99).toString();
2397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap headMap = decendingMap.headMap(endKey, false);
2398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = headMap.values();
2399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator it = values.iterator();
2400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 999; i > 990; i--) {
2401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
2402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, it.next());
2403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(11).toString();
2406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap tailMap = decendingMap.tailMap(startKey, false);
2407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = tailMap.values();
2408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        it = values.iterator();
2409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 109; i > 100; i--) {
2410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
2411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, it.next());
2412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = decendingMap.values();
2416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
2417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(109));
2418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 108; i > 100; i--) {
2419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
2420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(100));
2422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = decendingMap.values();
2425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
2426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(100));
2427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 108; i > 100; i--) {
2428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
2429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(109));
2431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = decendingMap.values();
2434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
2435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(100));
2436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 108; i > 100; i--) {
2437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
2438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.contains(109));
2440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        values = decendingMap.values();
2443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(values.isEmpty());
2444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(100));
2445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 108; i > 100; i--) {
2446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(values.contains(i));
2447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(values.contains(109));
2449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_headMap() {
2452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
2453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(0).toString(), key;
2454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subDecendingMap_Included = decendingMap.headMap(endKey, true);
2455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subDecendingMap_Excluded = decendingMap
2456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .headMap(endKey, false);
2457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 1; i < 1000; i++) {
2461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1000).toString();
2466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.headMap(endKey, true);
2473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
2490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.headMap(endKey, true);
2502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
2519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
2544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
2569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
2578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
2580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
2581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.headMap(endKey, true);
2584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
2601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
2610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
2611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.headMap(endKey, true);
2614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
2631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
2640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
2641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
2657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
2666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
2667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
2683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_subMap() {
2693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap descendingMap = tm.descendingMap();
2694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(109).toString();
2695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(100).toString();
2696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingMap.subMap(endKey, false, startKey, false);
2698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subDescendingMap = descendingMap.subMap(startKey, false,
2703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endKey, false);
2704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(100).toString();
2705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDescendingMap.containsKey(key));
2706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDescendingMap.containsKey(key));
2709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDescendingMap.containsKey(key));
2712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDescendingMap = descendingMap.subMap(startKey, false, endKey, true);
2714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDescendingMap.containsKey(key));
2716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDescendingMap.containsKey(key));
2719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDescendingMap.containsKey(key));
2722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDescendingMap = descendingMap.subMap(startKey, true, endKey, false);
2724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDescendingMap.containsKey(key));
2726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDescendingMap.containsKey(key));
2729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDescendingMap.containsKey(key));
2732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDescendingMap = descendingMap.subMap(startKey, true, endKey, true);
2734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDescendingMap.containsKey(key));
2736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
2737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDescendingMap.containsKey(key));
2739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
2741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDescendingMap.containsKey(key));
2742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>();
2744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = -10; i < 10; i++) {
2745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            treeMap.put(i, String.valueOf(i));
2746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingMap = treeMap.descendingMap();
2748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDescendingMap = descendingMap.subMap(5, 0);
2749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(5, subDescendingMap.size());
2750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMap_tailMap() {
2753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // tm
2754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap decendingMap = tm.descendingMap();
2755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(1000).toString(), key;
2756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subDecendingMap_Excluded = decendingMap
2758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .tailMap(endKey, false);
2759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(10).toString();
2768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1).toString();
2772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
2776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
2780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 998; i > 0; i--) {
2786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
2791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.containsKey(key));
2793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(0).toString();
2795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subDecendingMap_Included.size());
2798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
2801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // navigableMap_startExcluded_endExcluded
2803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
2805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
2814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
2820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
2831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 107; i > 100; i--) {
2837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subDecendingMap_Included.size());
2850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
2852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
2862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
2864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
2873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // navigableMap_startExcluded_endIncluded
2879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
2881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
2890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
2896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
2903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 107; i > 100; i--) {
2909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
2916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subDecendingMap_Included.size());
2922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
2924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
2926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
2934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
2936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
2944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // navigableMap_startIncluded_endExcluded
2950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
2952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
2961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
2962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
2967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
2969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
2972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
2978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 107; i > 100; i--) {
2984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
2985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
2986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
2987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
2989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
2993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
2996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subDecendingMap_Included.size());
2997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
2998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
2999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
3001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
3008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // navigableMap_startIncluded_endIncluded
3022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
3023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
3024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
3038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
3049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 107; i > 100; i--) {
3055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
3056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
3057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
3058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
3060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
3064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subDecendingMap_Included.size());
3068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
3072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
3079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
3093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
3094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
3095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
3096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
3111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
3122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 107; i > 100; i--) {
3128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
3129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
3130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
3131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
3133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
3134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
3135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
3137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subDecendingMap_Included.size());
3141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
3143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
3145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
3153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
3155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
3170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
3171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
3172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
3187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
3194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 107; i > 100; i--) {
3200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
3201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
3202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
3203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
3205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
3206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Included.containsKey(key));
3207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
3209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subDecendingMap_Included.size());
3213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
3215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
3217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Excluded.isEmpty());
3225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
3227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // navigableMap_startIncluded_endExcluded
3241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startIncluded_endExcluded)
3242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
3243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
3244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
3259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
3270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 107; i > 100; i--) {
3276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
3277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
3278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
3279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
3281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
3285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subDecendingMap_Included.size());
3289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
3293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
3300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        decendingMap = ((NavigableMap) subMap_startIncluded_endIncluded)
3314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingMap();
3315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
3316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
3330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(108).toString();
3341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 107; i > 100; i--) {
3347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
3348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Included.containsKey(key));
3349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(subDecendingMap_Excluded.containsKey(key));
3350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
3352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
3356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subDecendingMap_Included.size());
3360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
3364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = endKey;
3367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDecendingMap_Included.containsKey(key));
3368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDecendingMap_Excluded.containsKey(key));
3369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
3371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, true);
3373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
3378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            decendingMap.tailMap(endKey, false);
3379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
3380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
3381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
3382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_Entry_setValue() {
3386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap treeMap = new TreeMap();
3387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value = null;
3388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 50; i++) {
3389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = new Integer(i);
3390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            treeMap.put(value, value);
3391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Map checkedMap = Collections.checkedMap(treeMap, Integer.class,
3393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Integer.class);
3394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = checkedMap.entrySet();
3395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = entrySet.iterator();
3396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(0);
3398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (; iterator.hasNext(); value++) {
3399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
3400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.setValue(value + 1));
3401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value + 1, entry.getValue());
3402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_comparator() {
3406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
3407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingSet;
3408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Comparator comparator;
3409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry[] entryArray;
3410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value1, value2;
3411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(((NavigableSet) entrySet).comparator());
3416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            comparator = descendingSet.comparator();
3417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(comparator);
3418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
3420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
3421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 1; i < entryArray.length; i++) {
3422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value1 = (Integer) entryArray[i - 1].getValue();
3423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value2 = (Integer) entryArray[i].getValue();
3424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(value1 > value2);
3425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(comparator.compare(value1, value2) < 0);
3426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(((NavigableSet) entrySet).comparator());
3433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            comparator = descendingSet.comparator();
3434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(comparator);
3435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
3437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
3438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 1; i < entryArray.length; i++) {
3439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value1 = (Integer) entryArray[i - 1].getValue();
3440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value2 = (Integer) entryArray[i].getValue();
3441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(value1 > value2);
3442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(comparator.compare(value1, value2) < 0);
3443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(((NavigableSet) entrySet).comparator());
3450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            comparator = descendingSet.comparator();
3451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(comparator);
3452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
3454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
3455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 1; i < entryArray.length; i++) {
3456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value1 = (Integer) entryArray[i - 1].getValue();
3457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value2 = (Integer) entryArray[i].getValue();
3458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(value1 > value2);
3459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(comparator.compare(value1, value2) < 0);
3460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(((NavigableSet) entrySet).comparator());
3467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            comparator = descendingSet.comparator();
3468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(comparator);
3469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
3471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
3472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 1; i < entryArray.length; i++) {
3473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value1 = (Integer) entryArray[i - 1].getValue();
3474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value2 = (Integer) entryArray[i].getValue();
3475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(value1 > value2);
3476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(comparator.compare(value1, value2) < 0);
3477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
3481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
3482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(descendingSet.comparator());
3485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_descendingSet() {
3489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
3490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet, descendingSet, descendingDescedingSet;
3491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry[] ascendingEntryArray, descendingDescendingArray;
3492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescedingSet = descendingSet.descendingSet();
3498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingEntryArray = (Entry[]) ascendingSubMapEntrySet
3499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[ascendingSubMapEntrySet.size()]);
3500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescendingArray = (Entry[]) descendingDescedingSet
3502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingDescedingSet.size()]);
3503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(ascendingEntryArray.length,
3505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    descendingDescendingArray.length);
3506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < ascendingEntryArray.length; i++) {
3507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(ascendingEntryArray[i],
3508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingDescendingArray[i]);
3509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescedingSet = descendingSet.descendingSet();
3517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingEntryArray = (Entry[]) ascendingSubMapEntrySet
3518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[ascendingSubMapEntrySet.size()]);
3519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescendingArray = (Entry[]) descendingDescedingSet
3521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingDescedingSet.size()]);
3522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(ascendingEntryArray.length,
3524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    descendingDescendingArray.length);
3525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < ascendingEntryArray.length; i++) {
3526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(ascendingEntryArray[i],
3527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingDescendingArray[i]);
3528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescedingSet = descendingSet.descendingSet();
3536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingEntryArray = (Entry[]) ascendingSubMapEntrySet
3537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[ascendingSubMapEntrySet.size()]);
3538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescendingArray = (Entry[]) descendingDescedingSet
3540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingDescedingSet.size()]);
3541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(ascendingEntryArray.length,
3543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    descendingDescendingArray.length);
3544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < ascendingEntryArray.length; i++) {
3545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(ascendingEntryArray[i],
3546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingDescendingArray[i]);
3547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescedingSet = descendingSet.descendingSet();
3555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingEntryArray = (Entry[]) ascendingSubMapEntrySet
3556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[ascendingSubMapEntrySet.size()]);
3557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescendingArray = (Entry[]) descendingDescedingSet
3559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingDescedingSet.size()]);
3560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(ascendingEntryArray.length,
3562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    descendingDescendingArray.length);
3563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < ascendingEntryArray.length; i++) {
3564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(ascendingEntryArray[i],
3565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingDescendingArray[i]);
3566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
3570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();// 0...2
3571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [2...0]
3573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [0...2]
3575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescedingSet = descendingSet.descendingSet();
3576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = descendingDescedingSet.iterator();
3577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, ((Entry) iterator.next()).getValue());
3578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(2).toString();
3581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.tailMap(startKey, true).entrySet();// 2...
3582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [2...0]
3584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [0...2]
3586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingDescedingSet = descendingSet.descendingSet();
3587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = descendingDescedingSet.iterator();
3588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, ((Entry) iterator.next()).getValue());
3589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_first() {
3594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
3595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet, descendingSet;
3596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingSet.first();
3603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(101, entry.getValue());
3604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingSet.first();
3611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(101, entry.getValue());
3612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingSet.first();
3619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, entry.getValue());
3620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingSet.first();
3627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, entry.getValue());
3628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_last() {
3632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
3633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet, descendingSet;
3634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingSet.last();
3641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, entry.getValue());
3642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingSet.last();
3649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, entry.getValue());
3650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingSet.last();
3657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, entry.getValue());
3658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
3664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingSet.last();
3665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, entry.getValue());
3666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollFirst_startExcluded_endExcluded() {
3670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(8, descendingSubMapEntrySet.size());
3676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 101; i < 109; i++) {
3677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSubMapEntrySet.pollFirst();
3678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(i, entry.getValue());
3679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(descendingSubMapEntrySet.pollFirst());
3681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollFirst_startExcluded_endIncluded() {
3685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(9, descendingSubMapEntrySet.size());
3691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 101; i < 110; i++) {
3692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSubMapEntrySet.pollFirst();
3693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(i, entry.getValue());
3694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(descendingSubMapEntrySet.pollFirst());
3696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollFirst_startIncluded_endExcluded() {
3700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(9, descendingSubMapEntrySet.size());
3706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 100; i < 109; i++) {
3707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSubMapEntrySet.pollFirst();
3708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(i, entry.getValue());
3709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(descendingSubMapEntrySet.pollFirst());
3711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollFirst_startIncluded_endIncluded() {
3715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(10, descendingSubMapEntrySet.size());
3721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 100; i < 110; i++) {
3722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSubMapEntrySet.pollFirst();
3723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(i, entry.getValue());
3724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(descendingSubMapEntrySet.pollFirst());
3726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollFirst() {
3730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(2).toString();
3731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = tm.headMap(key, true).entrySet();// [0...2]
3732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingEntrySet;
3733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [2...0]
3737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingEntrySet = ((NavigableSet) entrySet).descendingSet();
3738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingEntrySet.pollFirst();
3739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, entry.getValue());
3740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.tailMap(key, true).entrySet();
3743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingEntrySet = ((NavigableSet) entrySet).descendingSet();
3745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingEntrySet.pollFirst();
3746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, entry.getValue());
3747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollLast_startExcluded_endExclued() {
3751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(8, descendingSubMapEntrySet.size());
3757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 108; i > 100; i--) {
3758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSubMapEntrySet.pollLast();
3759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(i, entry.getValue());
3760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(descendingSubMapEntrySet.pollFirst());
3762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollLast_startExcluded_endInclued() {
3766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(9, descendingSubMapEntrySet.size());
3772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 109; i > 100; i--) {
3773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSubMapEntrySet.pollLast();
3774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(i, entry.getValue());
3775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(descendingSubMapEntrySet.pollFirst());
3777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollLast_startIncluded_endExclued() {
3781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(9, descendingSubMapEntrySet.size());
3787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 108; i > 99; i--) {
3788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSubMapEntrySet.pollLast();
3789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(i, entry.getValue());
3790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(descendingSubMapEntrySet.pollFirst());
3792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollLast_startIncluded_endInclued() {
3796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(10, descendingSubMapEntrySet.size());
3802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 109; i > 99; i--) {
3803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSubMapEntrySet.pollLast();
3804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(i, entry.getValue());
3805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(descendingSubMapEntrySet.pollFirst());
3807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_pollLast() {
3811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(2).toString();
3812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = tm.headMap(key, true).entrySet();// [0...2]
3813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingEntrySet;
3814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [2...0]
3818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingEntrySet = ((NavigableSet) entrySet).descendingSet();
3819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingEntrySet.pollLast();
3820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, entry.getValue());
3821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.tailMap(key, true).entrySet();
3824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingEntrySet = ((NavigableSet) entrySet).descendingSet();
3826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) descendingEntrySet.pollLast();
3827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(999, entry.getValue());
3828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_descendingIterator() {
3832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
3833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingSet;
3834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
3835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.iterator();
3840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 108; value > 100; value--) {
3841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(iterator.hasNext());
3842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, ((Entry) iterator.next()).getValue());
3843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
3845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
3846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                iterator.next();
3847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NoSuchElementException");
3848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NoSuchElementException e) {
3849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
3850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.iterator();
3857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 109; value > 100; value--) {
3858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(iterator.hasNext());
3859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, ((Entry) iterator.next()).getValue());
3860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
3862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
3863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                iterator.next();
3864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NoSuchElementException");
3865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NoSuchElementException e) {
3866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
3867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.iterator();
3874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 108; value > 99; value--) {
3875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(iterator.hasNext());
3876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, ((Entry) iterator.next()).getValue());
3877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
3879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
3880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                iterator.next();
3881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NoSuchElementException");
3882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NoSuchElementException e) {
3883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
3884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.iterator();
3891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 109; value > 99; value--) {
3892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue(iterator.hasNext());
3893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, ((Entry) iterator.next()).getValue());
3894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
3896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
3897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                iterator.next();
3898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NoSuchElementException");
3899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NoSuchElementException e) {
3900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
3901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
3905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();// 0...2
3906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [2...0]
3908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
3909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.descendingIterator();
3910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, ((Entry) iterator.next()).getValue());// 0...2
3911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
3913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_headSet() {
3915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet, headSet;
3916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingSubMapEntrySet;
3917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator, headSetIterator;
3918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
3919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
3920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
3924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
3926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
3927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
3928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry);
3929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
3930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 108; headSetIterator.hasNext(); value--) {
3931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
3932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
3933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
3935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
3936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
3937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
3938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
3939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry, false);
3942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
3943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 108; headSetIterator.hasNext(); value--) {
3944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
3945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
3946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
3948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
3949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
3950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
3951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
3952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry, true);
3955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
3956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 108; headSetIterator.hasNext(); value--) {
3957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
3958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
3959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
3961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
3962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
3963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
3964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
3965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
3967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
3968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
3971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
3972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
3973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
3974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
3975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
3976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry);
3977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
3978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 109; headSetIterator.hasNext(); value--) {
3979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
3980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
3981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
3983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
3984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
3985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
3986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
3987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
3989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry, false);
3990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
3991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 109; headSetIterator.hasNext(); value--) {
3992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
3993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
3994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
3995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
3996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
3997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
3998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
3999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry, true);
4003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
4004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 109; headSetIterator.hasNext(); value--) {
4005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
4006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
4010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry);
4025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
4026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 108; headSetIterator.hasNext(); value--) {
4027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
4028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
4032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry, false);
4038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
4039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 108; headSetIterator.hasNext(); value--) {
4040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
4041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
4045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry, true);
4051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
4052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 108; headSetIterator.hasNext(); value--) {
4053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
4054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
4058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry);
4073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
4074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 109; headSetIterator.hasNext(); value--) {
4075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
4076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
4080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry, false);
4086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
4087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 109; headSetIterator.hasNext(); value--) {
4088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
4089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
4093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = descendingSubMapEntrySet.headSet(entry, true);
4099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
4100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 109; headSetIterator.hasNext(); value--) {
4101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
4102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
4106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
4114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();// 0...2
4115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [2...0]
4117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();// 2
4121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();// 199
4122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();// 198
4123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingSubMapEntrySet.headSet(entry);
4124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, headSet.size());// 2 199
4125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSetIterator = headSet.iterator();
4126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, ((Entry) headSetIterator.next()).getValue());
4127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, ((Entry) headSetIterator.next()).getValue());
4128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingSubMapEntrySet.headSet(entry, true);
4130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(3, headSet.size());// 2 199
4131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSetIterator = headSet.iterator();
4132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, ((Entry) headSetIterator.next()).getValue());
4133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, ((Entry) headSetIterator.next()).getValue());
4134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(198, ((Entry) headSetIterator.next()).getValue());
4135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
4137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_tailSet() {
4139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet, tailSet;
4140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingSubMapEntrySet;
4141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator, tailSetIterator;
4142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
4143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
4144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry);
4153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
4157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, ((Entry) tailSetIterator.next())
4171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
4185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry);
4204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
4208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, ((Entry) tailSetIterator.next())
4222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
4236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry);
4255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
4259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, ((Entry) tailSetIterator.next())
4273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
4287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry);
4306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
4310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, ((Entry) tailSetIterator.next())
4324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
4335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
4336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value--) {
4337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
4338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
4339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
4341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
4342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
4343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
4344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
4345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
4350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();// 0...2
4351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [2...0]
4353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();// 2
4357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();// 199
4358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingSubMapEntrySet.tailSet(entry);
4359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSetIterator = tailSet.iterator();
4360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, ((Entry) tailSetIterator.next()).getValue());
4361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSetIterator = tailSet.iterator();
4364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(198, ((Entry) tailSetIterator.next()).getValue());
4365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSetIterator = tailSet.iterator();
4368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, ((Entry) tailSetIterator.next()).getValue());
4369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
4371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_subSet() {
4373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet, subSet;
4374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingSubMapEntrySet;
4375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry startEntry, endEntry;
4376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator subSetIterator;
4377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iteratorStart = descendingSubMapEntrySet.iterator();
4383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iteratorStart.hasNext()) {
4384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                startEntry = (Entry) iteratorStart.next();
4385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Iterator iteratorEnd = descendingSubMapEntrySet.iterator();
4386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                while (iteratorEnd.hasNext()) {
4387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endEntry = (Entry) iteratorEnd.next();
4388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    int startIndex = (Integer) startEntry.getValue();
4389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    int endIndex = (Integer) endEntry.getValue();
4390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (startIndex < endIndex) {
4391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry,
4393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry);
4394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry, false,
4401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, false);
4402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry, false,
4409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, true);
4410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry, true,
4417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, false);
4418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry, true,
4425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, true);
4426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } else {
4431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                endEntry);
4433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                false, endEntry, false);
4441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex - 1; subSetIterator
4443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .hasNext(); index--) {
4444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                false, endEntry, true);
4450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex - 1; subSetIterator
4452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .hasNext(); index--) {
4453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                true, endEntry, false);
4459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                true, endEntry, true);
4467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
4473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
4478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
4479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // [2...0]
4481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = descendingSubMapEntrySet.iterator();
4484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startEntry = (Entry) iterator.next();
4485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
4486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endEntry = (Entry) iterator.next();
4487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = descendingSubMapEntrySet.subSet(startEntry, endEntry);
4488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, subSet.size());
4489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = descendingSubMapEntrySet.subSet(startEntry, false,
4491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endEntry, false);
4492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(1, subSet.size());
4493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator = subSet.iterator();
4494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, ((Entry) subSetIterator.next()).getValue());
4495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = descendingSubMapEntrySet.subSet(startEntry, false,
4497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endEntry, true);
4498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, subSet.size());
4499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator = subSet.iterator();
4500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, ((Entry) subSetIterator.next()).getValue());
4501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(198, ((Entry) subSetIterator.next()).getValue());
4502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = descendingSubMapEntrySet.subSet(startEntry, true,
4504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endEntry, false);
4505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, subSet.size());
4506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator = subSet.iterator();
4507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, ((Entry) subSetIterator.next()).getValue());
4508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, ((Entry) subSetIterator.next()).getValue());
4509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = descendingSubMapEntrySet.subSet(startEntry, true,
4511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endEntry, true);
4512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(3, subSet.size());
4513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator = subSet.iterator();
4514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, ((Entry) subSetIterator.next()).getValue());
4515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, ((Entry) subSetIterator.next()).getValue());
4516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(198, ((Entry) subSetIterator.next()).getValue());
4517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comnparator
4520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
4521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iteratorStart = descendingSubMapEntrySet.iterator();
4525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iteratorStart.hasNext()) {
4526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                startEntry = (Entry) iteratorStart.next();
4527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Iterator iteratorEnd = descendingSubMapEntrySet.iterator();
4528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                while (iteratorEnd.hasNext()) {
4529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endEntry = (Entry) iteratorEnd.next();
4530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    int startIndex = (Integer) startEntry.getValue();
4531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    int endIndex = (Integer) endEntry.getValue();
4532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (startIndex < endIndex) {
4533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry,
4535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry);
4536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry, false,
4543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, false);
4544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry, false,
4551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, true);
4552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry, true,
4559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, false);
4560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
4566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            descendingSubMapEntrySet.subSet(startEntry, true,
4567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, true);
4568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
4569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
4570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
4571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } else {
4573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                endEntry);
4575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                false, endEntry, false);
4583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex - 1; subSetIterator
4585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .hasNext(); index--) {
4586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                false, endEntry, true);
4592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex - 1; subSetIterator
4594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .hasNext(); index--) {
4595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                true, endEntry, false);
4601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                true, endEntry, true);
4609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
4610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
4612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
4613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
4614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
4615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
4619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_lower() {
4621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet, subSet;
4622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingSubMapEntrySet;
4623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
4624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry, lowerEntry;
4625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
4626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 108) {
4637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
4638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
4640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println(descendingSubMapEntrySet);
4644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println(tm);
4645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println("o:" + afterEnd);
4648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object x = descendingSubMapEntrySet.lower(afterEnd);
4649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println("x:" + x);
4650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(x);
4651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
4652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println("before: " + beforeStart);
4654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object y = descendingSubMapEntrySet.lower(beforeStart);
4655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println("y: " + y);
4656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(y);
4657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(101, (((Entry) y).getValue()));
4658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 109) {
4670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
4671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
4673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 108) {
4687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
4688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
4690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 109) {
4704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
4705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
4707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
4712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
4713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();// 2
4718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();// 199
4719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();// 198
4720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(199, lowerEntry.getValue());
4722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
4724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_higher() {
4726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet, subSet;
4727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingSubMapEntrySet;
4728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
4729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry, higherEntry;
4730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
4731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 101) {
4742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, higherEntry.getValue());
4743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(higherEntry);
4745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object x = descendingSubMapEntrySet.higher(afterEnd);
4751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(x);
4752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, ((Entry) x).getValue());
4753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
4754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object y = descendingSubMapEntrySet.higher(beforeStart);
4756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(y);
4757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 101) {
4769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, higherEntry.getValue());
4770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(higherEntry);
4772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 100) {
4786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, higherEntry.getValue());
4787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(higherEntry);
4789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 100) {
4803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, higherEntry.getValue());
4804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(higherEntry);
4806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
4811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
4812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();// 2
4817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();// 199
4818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();// 198
4819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(197, higherEntry.getValue());
4821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
4824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
4825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .descendingSet();
4828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSubMapEntrySet.iterator();
4829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
4833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 101) {
4834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, higherEntry.getValue());
4835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
4836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(higherEntry);
4837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
4838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object x = descendingSubMapEntrySet.higher(afterEnd);
4843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(x);
4844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, ((Entry) x).getValue());
4845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
4846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object y = descendingSubMapEntrySet.higher(beforeStart);
4848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(y);
4849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
4851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_ceiling() {
4853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
4854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet, descendingSet;
4855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
4856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry[] entryArray;
4857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
4861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
4862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
4863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.ceiling(null);
4864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
4865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
4866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
4867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
4870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
4871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 108; i < entryArray.length; i++) {
4872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.ceiling(entryArray[i]);
4873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
4874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println(descendingSet);
4877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println(tm);
4878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println("o:" + afterEnd);//110
4881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object x = descendingSet.ceiling(afterEnd);
4882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(x);
4883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println("x:" + x);
4884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, ((Entry) x).getValue());
4885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
4886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // System.out.println("before: " + beforeStart);//0
4888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object y = descendingSet.ceiling(beforeStart);
4889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(y);
4890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
4895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
4896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
4897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.ceiling(null);
4898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
4899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
4900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
4901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
4904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
4905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 109; i < entryArray.length; i++) {
4906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.ceiling(entryArray[i]);
4907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
4908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
4914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
4915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
4916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.ceiling(null);
4917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
4918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
4919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
4920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
4923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
4924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 108; i < entryArray.length; i++) {
4925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.ceiling(entryArray[i]);
4926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
4927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
4933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
4934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.ceiling(null);
4935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
4936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
4937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
4938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
4941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
4942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 109; i < entryArray.length; i++) {
4943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.ceiling(entryArray[i]);
4944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
4945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
4949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
4950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
4952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
4953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.ceiling(null);
4954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
4955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
4956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
4957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = descendingSet.iterator();
4960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Entry ceilingEntry;
4961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
4962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
4963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ceilingEntry = (Entry) descendingSet.ceiling(entry);
4964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry, ceilingEntry);
4965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
4967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
4969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapEntrySet_floor() {
4971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
4972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet, descendingSet;
4973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
4974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry[] entryArray;
4975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
4978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
4979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
4980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
4981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.floor(null);
4982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
4983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
4984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
4985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
4988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
4989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 108; i < entryArray.length; i++) {
4990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.floor(entryArray[i]);
4991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
4992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
4993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
4996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object x = descendingSet.floor(afterEnd);
4997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(x);
4998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
4999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
5000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .iterator().next();
5001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object y = descendingSet.floor(beforeStart);
5002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(y);
5003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(101, (((Entry) y).getValue()));
5004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
5007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
5008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
5010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
5011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.floor(null);
5012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
5013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
5014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
5015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
5018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
5019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 109; i < entryArray.length; i++) {
5020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.floor(entryArray[i]);
5021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
5022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
5026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
5027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
5029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
5030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.floor(null);
5031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
5032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
5033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
5034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
5037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
5038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 108; i < entryArray.length; i++) {
5039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.floor(entryArray[i]);
5040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
5041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
5045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
5046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
5047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
5048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.floor(null);
5049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
5050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
5051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
5052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
5055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
5056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 109; i < entryArray.length; i++) {
5057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.floor(entryArray[i]);
5058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
5059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
5063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
5064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
5065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
5066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = descendingSet.iterator();
5068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Entry floorEntry;
5069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
5070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
5071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) descendingSet.floor(entry);
5072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry, floorEntry);
5073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
5077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
5078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
5079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
5081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
5082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.floor(null);
5083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
5084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
5085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
5086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
5089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
5090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 108; i < entryArray.length; i++) {
5091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.floor(entryArray[i]);
5092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
5093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
5097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
5098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
5100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
5101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.floor(null);
5102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
5103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
5104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
5105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
5108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
5109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 109; i < entryArray.length; i++) {
5110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.floor(entryArray[i]);
5111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
5112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
5116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
5117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
5119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
5120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.floor(null);
5121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
5122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
5123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
5124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
5127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
5128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 108; i < entryArray.length; i++) {
5129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.floor(entryArray[i]);
5130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
5131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
5135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
5136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ((NavigableSet) entrySet).descendingSet();
5137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
5138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                descendingSet.floor(null);
5139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NPE");
5140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
5141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
5142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entryArray = (Entry[]) descendingSet
5145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toArray(new Entry[descendingSet.size()]);
5146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0, j = 109; i < entryArray.length; i++) {
5147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) descendingSet.floor(entryArray[i]);
5148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(j - i, entry.getValue());
5149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_comparator() {
5154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingKeySet;
5155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Comparator comparator;
5156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] keyArray;
5157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value1, value2;
5158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
5160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
5161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        comparator = descendingKeySet.comparator();
5163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(comparator);
5164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
5165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
5166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 1; i < keyArray.length; i++) {
5167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value1 = Integer.valueOf(keyArray[i - 1]);
5168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value2 = Integer.valueOf(keyArray[i]);
5169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(value1 > value2);
5170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(comparator.compare(value1, value2) < 0);
5171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
5174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
5175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        comparator = descendingKeySet.comparator();
5177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(comparator);
5178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
5179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
5180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 1; i < keyArray.length; i++) {
5181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value1 = Integer.valueOf(keyArray[i - 1]);
5182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value2 = Integer.valueOf(keyArray[i]);
5183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(value1 > value2);
5184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(comparator.compare(value1, value2) < 0);
5185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
5188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
5189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        comparator = descendingKeySet.comparator();
5191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(comparator);
5192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
5193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
5194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 1; i < keyArray.length; i++) {
5195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value1 = Integer.valueOf(keyArray[i - 1]);
5196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value2 = Integer.valueOf(keyArray[i]);
5197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(value1 > value2);
5198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(comparator.compare(value1, value2) < 0);
5199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
5202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
5203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        comparator = descendingKeySet.comparator();
5205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(comparator);
5206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
5207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
5208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 1; i < keyArray.length; i++) {
5209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value1 = Integer.valueOf(keyArray[i - 1]);
5210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value2 = Integer.valueOf(keyArray[i]);
5211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(value1 > value2);
5212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(comparator.compare(value1, value2) < 0);
5213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
5216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
5217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
5218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(descendingKeySet.comparator());
5220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_first() {
5223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
5224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String firstKey1 = new Integer(100).toString();
5225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String firstKey2 = new Integer(101).toString();
5226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
5228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey2, keySet.first());
5229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
5231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey2, keySet.first());
5232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
5234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, keySet.first());
5235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
5237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, keySet.first());
5238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollFirst_startExcluded_endExcluded() {
5241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startExcluded_endExcluded
5242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
5243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
5245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, keySet.size());
5246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 101; value < 109; value++) {
5247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollFirst());
5248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
5250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
5251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollFirst_startExcluded_endIncluded() {
5254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startExcluded_endIncluded
5255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
5256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
5258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
5259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 101; value < 110; value++) {
5260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollFirst());
5261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
5263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
5264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollFirst_startIncluded_endExcluded() {
5267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startIncluded_endExcluded
5268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
5269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
5271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
5272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 100; value < 109; value++) {
5273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollFirst());
5274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
5276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
5277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollFirst_startIncluded_endIncluded() {
5280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startIncluded_endIncluded
5281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
5282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
5284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, keySet.size());
5285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 100; value < 110; value++) {
5286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollFirst());
5287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
5289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
5290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollFirst() {
5293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
5294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = tm.headMap(endKey, true).navigableKeySet();
5295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(endKey, descendingKeySet.pollFirst());
5297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollLast_startExcluded_endExcluded() {
5300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startExcluded_endExcluded
5301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
5302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
5304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, keySet.size());
5305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 108; value > 100; value--) {
5306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollLast());
5307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
5309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
5310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollLast_startExcluded_endIncluded() {
5313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startExcluded_endIncluded
5314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
5315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
5317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
5318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 109; value > 100; value--) {
5319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollLast());
5320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
5322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
5323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollLast_startIncluded_endExcluded() {
5326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startIncluded_endExcluded
5327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
5328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
5330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
5331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 108; value > 99; value--) {
5332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollLast());
5333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
5335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
5336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollLast_startIncluded_endIncluded() {
5339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startIncluded_endIncluded
5340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
5341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
5343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, keySet.size());
5344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 109; value > 99; value--) {
5345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollLast());
5346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
5348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
5349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_pollLast() {
5352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
5353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = tm.headMap(endKey, true).navigableKeySet();
5354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet descendingKeySet = keySet.descendingSet();
5355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), descendingKeySet.pollLast());
5356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_headSet() {
5359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingKeySet;
5360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedSet headSet;
5361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey, key;
5362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
5363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int index;
5364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
5366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
5368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey);
5370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, false);
5376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
5388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
5412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
5419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
5427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
5437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
5438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey);
5439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
5441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 108; iterator.hasNext(); j--) {
5442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
5446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey, false);
5448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 108; iterator.hasNext(); j--) {
5450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
5454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey, true);
5456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 108; iterator.hasNext(); j--) {
5458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i - 1, j);
5462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
5465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
5472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
5480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
5489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey);
5491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, false);
5503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
5509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
5511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey);
5513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, false);
5519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
5531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
5555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
5562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
5570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
5580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
5581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey);
5582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
5584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 109; iterator.hasNext(); j--) {
5585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
5589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey, false);
5591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 109; iterator.hasNext(); j--) {
5593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
5597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey, true);
5599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 109; iterator.hasNext(); j--) {
5601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i - 1, j);
5605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
5608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
5615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
5623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
5631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
5633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey);
5635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, false);
5647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
5653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
5655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey);
5657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, false);
5663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
5675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(99, index);
5698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
5700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
5707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
5715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
5725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
5726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey);
5727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
5729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 108; iterator.hasNext(); j--) {
5730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
5734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey, false);
5736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 108; iterator.hasNext(); j--) {
5738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
5742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey, true);
5744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 108; iterator.hasNext(); j--) {
5746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i - 1, j);
5750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
5753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
5760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 108; iterator.hasNext(); index--) {
5764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
5768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
5777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey);
5779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, false);
5791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
5797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
5799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey);
5801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, false);
5807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
5819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(99, index);
5842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
5844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
5851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
5859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
5867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
5869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
5870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey);
5871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
5873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 109; iterator.hasNext(); j--) {
5874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
5878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey, false);
5880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 109; iterator.hasNext(); j--) {
5882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
5886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = descendingKeySet.headSet(endKey, true);
5888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
5889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 109; iterator.hasNext(); j--) {
5890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
5891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
5892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
5893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i - 1, j);
5894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
5897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
5904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
5912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
5916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
5917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
5918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
5920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
5922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey);
5924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, true);
5930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.headSet(endKey, false);
5936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
5942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
5943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
5945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
5946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = (String) iterator.next();
5947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, headSet.size());
5950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, false);
5952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, headSet.size());
5953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey, true);
5955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, headSet.size());
5956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
5958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.tailMap(key, true).navigableKeySet();
5959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
5961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
5962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = (String) iterator.next();
5963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = descendingKeySet.headSet(endKey);
5964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, headSet.size());
5965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
5966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(999, Integer.parseInt((String) iterator.next()));
5967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
5968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_tailSet() {
5970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingKeySet;
5971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedSet tailSet;
5972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey, key;
5973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
5974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int index;
5975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
5977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
5978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
5979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
5981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
5988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
5993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
5994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, false);
5995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
5996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
5997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
5998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
5999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
6001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, tailSet.size());
6015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(101).toString();
6017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
6040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
6042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
6043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey);
6045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
6047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
6050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, j);
6052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey, true);
6054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
6058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, j);
6060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey, false);
6062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j - 1).toString(), key);
6066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(101, j);
6068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
6071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
6086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index - 1).toString(), key);
6088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
6090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
6092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, false);
6106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
6112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
6113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
6114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, false);
6130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
6136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, tailSet.size());
6150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(101).toString();
6152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
6175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
6177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
6178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey);
6180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
6182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
6185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, j);
6187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey, true);
6189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
6193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, j);
6195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey, false);
6197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j - 1).toString(), key);
6201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(101, j);
6203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
6206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
6209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
6217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
6225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index - 1).toString(), key);
6227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
6229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
6231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, false);
6245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
6251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
6252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
6253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, false);
6267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
6273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, tailSet.size());
6275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(startKey, iterator.next());
6277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, tailSet.size());
6280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(startKey, iterator.next());
6282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, tailSet.size());
6285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(101).toString();
6287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(99, index);
6294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(99, index);
6302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index - 1).toString(), key);
6308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
6312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
6313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey);
6315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
6317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
6320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(99, j);
6322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey, true);
6324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
6328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(99, j);
6330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey, false);
6332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j - 1).toString(), key);
6336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, j);
6338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
6341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
6356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index - 1).toString(), key);
6358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
6362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, false);
6376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
6382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
6383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
6384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, false);
6398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
6404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, tailSet.size());
6406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(startKey, iterator.next());
6408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, tailSet.size());
6411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(startKey, iterator.next());
6413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, tailSet.size());
6416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(101).toString();
6418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(99, index);
6425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(99, index);
6433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index--) {
6437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index - 1).toString(), key);
6439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
6443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
6444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey);
6446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
6448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
6451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(99, j);
6453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey, true);
6455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
6459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(99, j);
6461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = descendingKeySet.tailSet(startKey, false);
6463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
6464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j--) {
6465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
6466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j - 1).toString(), key);
6467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, j);
6469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
6472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
6475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(99, index);
6479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
6483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
6485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(99, index);
6487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
6490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index--) {
6491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
6492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index - 1).toString(), key);
6493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, index);
6495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
6497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey);
6499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, true);
6505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.tailSet(startKey, false);
6511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
6512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
6513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
6517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
6518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
6519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
6520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
6521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = (String) iterator.next();
6522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey);
6524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(112, tailSet.size());
6525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator tailIterator = tailSet.iterator();
6526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(199).toString(), tailIterator.next());
6527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, true);
6529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(112, tailSet.size());
6530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailIterator = tailSet.iterator();
6531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(199).toString(), tailIterator.next());
6532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = descendingKeySet.tailSet(startKey, false);
6534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(111, tailSet.size());
6535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailIterator = tailSet.iterator();
6536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(198).toString(), tailIterator.next());
6537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
6538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_subSet() {
6540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingKeySet;
6541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedSet subSet;
6542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey, endKey, key;
6543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator startIterator, endIterator, subSetIterator;
6544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
6546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
6547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startIterator = descendingKeySet.iterator();
6548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (startIterator.hasNext()) {
6549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = (String) startIterator.next();
6550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endIterator = descendingKeySet.iterator();
6551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (endIterator.hasNext()) {
6552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endKey = (String) endIterator.next();
6553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int startIndex = Integer.valueOf(startKey);
6554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int endIndex = Integer.valueOf(endKey);
6555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (startIndex < endIndex) {
6556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, endKey);
6558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
6559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, false, endKey, false);
6565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
6566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, false, endKey, true);
6572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
6573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, true, endKey, false);
6579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
6580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, true, endKey, true);
6586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
6587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
6591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, endKey);
6592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, false, endKey,
6599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            false);
6600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex - 1; subSetIterator.hasNext(); index--) {
6602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, false, endKey,
6607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            true);
6608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex - 1; subSetIterator.hasNext(); index--) {
6610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, true, endKey,
6615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            false);
6616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, true, endKey,
6623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            true);
6624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
6630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(2).toString();
6634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
6635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
6636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
6637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = (String) iterator.next();
6639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
6640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = (String) iterator.next();
6641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = descendingKeySet.subSet(startKey, endKey);
6643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subSet.size());
6644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
6645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(startKey, subSetIterator.next());
6646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator.next();
6647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
6649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = descendingKeySet.subSet(startKey, false, endKey, false);
6655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSet.size());
6656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
6657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator.next();
6658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
6660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = descendingKeySet.subSet(startKey, false, endKey, true);
6666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subSet.size());
6667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
6668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator.next();
6669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(endKey, subSetIterator.next());
6670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
6672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = descendingKeySet.subSet(startKey, true, endKey, false);
6678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subSet.size());
6679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
6680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(startKey, subSetIterator.next());
6681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator.next();
6682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
6684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = descendingKeySet.subSet(startKey, true, endKey, true);
6690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(3, subSet.size());
6691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
6692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(startKey, subSetIterator.next());
6693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator.next();
6694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(endKey, subSetIterator.next());
6695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
6697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
6703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
6704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
6705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
6706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startIterator = descendingKeySet.iterator();
6707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (startIterator.hasNext()) {
6708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = (String) startIterator.next();
6709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endIterator = descendingKeySet.iterator();
6710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (endIterator.hasNext()) {
6711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endKey = (String) endIterator.next();
6712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int startIndex = Integer.valueOf(startKey);
6713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int endIndex = Integer.valueOf(endKey);
6714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (startIndex < endIndex) {
6715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, endKey);
6717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
6718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, false, endKey, false);
6724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
6725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, false, endKey, true);
6731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
6732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, true, endKey, false);
6738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
6739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
6744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        descendingKeySet.subSet(startKey, true, endKey, true);
6745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
6746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
6747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
6748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
6750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, endKey);
6751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, false, endKey,
6758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            false);
6759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex - 1; subSetIterator.hasNext(); index--) {
6761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, false, endKey,
6766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            true);
6767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex - 1; subSetIterator.hasNext(); index--) {
6769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, true, endKey,
6774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            false);
6775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = descendingKeySet.subSet(startKey, true, endKey,
6782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            true);
6783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
6784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
6786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
6787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
6788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
6789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
6790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
6792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_descendingSet() {
6794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingSet, descendingDescendingSet;
6795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
6796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
6797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
6799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingDescendingSet = descendingSet.descendingSet();
6801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingDescendingSet.iterator();
6802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(iterator.hasNext());
6803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 101; iterator.hasNext(); value++) {
6804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
6805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value);
6807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
6809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
6815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingDescendingSet = descendingSet.descendingSet();
6817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingDescendingSet.iterator();
6818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(iterator.hasNext());
6819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 101; iterator.hasNext(); value++) {
6820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
6821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, value);
6823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
6825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
6831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingDescendingSet = descendingSet.descendingSet();
6833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingDescendingSet.iterator();
6834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(iterator.hasNext());
6835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 100; iterator.hasNext(); value++) {
6836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
6837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value);
6839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
6841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
6847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingDescendingSet = descendingSet.descendingSet();
6849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingDescendingSet.iterator();
6850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(iterator.hasNext());
6851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 100; iterator.hasNext(); value++) {
6852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
6853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, value);
6855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
6857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
6863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
6864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingDescendingSet = descendingSet.descendingSet();
6866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(keySet, descendingDescendingSet);
6867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(2).toString();
6869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.tailMap(startKey, true).navigableKeySet();
6870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingDescendingSet = descendingSet.descendingSet();
6872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(keySet, descendingDescendingSet);
6873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
6874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_descendingIterator() {
6876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingSet;
6877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
6878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator, descendingIterator;
6879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
6881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(descendingIterator.hasNext());
6884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 101; descendingIterator.hasNext(); value++) {
6885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), descendingIterator
6886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
6887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value);
6889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingIterator.next();
6891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = descendingSet
6897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .headSet(new Integer(105).toString(), true);
6898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 105; descendingIterator.hasNext(); value++) {
6900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), descendingIterator
6901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
6902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = descendingSet
6906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .tailSet(new Integer(105).toString(), true);
6907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 101; descendingIterator.hasNext(); value++) {
6909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), descendingIterator
6910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
6911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
6914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(descendingIterator.hasNext());
6917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 101; descendingIterator.hasNext(); value++) {
6918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), descendingIterator
6919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
6920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, value);
6922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingIterator.next();
6924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = descendingSet
6930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .headSet(new Integer(105).toString(), true);
6931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 105; descendingIterator.hasNext(); value++) {
6933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), descendingIterator
6934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
6935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = descendingSet
6939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .tailSet(new Integer(105).toString(), true);
6940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 101; descendingIterator.hasNext(); value++) {
6942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), descendingIterator
6943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
6944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
6947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(descendingIterator.hasNext());
6950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 100; descendingIterator.hasNext(); value++) {
6951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), descendingIterator
6952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
6953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value);
6955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingIterator.next();
6957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
6963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(descendingIterator.hasNext());
6966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (value = 100; descendingIterator.hasNext(); value++) {
6967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), descendingIterator
6968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
6969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, value);
6971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
6972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingIterator.next();
6973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
6974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
6975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
6976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
6979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
6980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
6981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
6986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(iterator.next(), descendingIterator.next());
6987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(2).toString();
6990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.tailMap(startKey, true).navigableKeySet();
6991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
6992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
6993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingIterator = descendingSet.descendingIterator();
6994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
6996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(iterator.next(), descendingIterator.next());
6997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
6998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
6999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_lower() {
7001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingKeySet;
7002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
7003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key, lowerKey;
7004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value, lowerValue;
7005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) descendingKeySet.lower(key);
7013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 108) {
7014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
7015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
7016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
7018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, Integer.parseInt(lowerKey));
7024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(lowerKey);
7028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) descendingKeySet.lower(key);
7036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 109) {
7037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
7038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
7039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
7041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, Integer.parseInt(lowerKey));
7047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(lowerKey);
7051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) descendingKeySet.lower(key);
7059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 108) {
7060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
7061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
7062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
7064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, Integer.parseInt(lowerKey));
7070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(lowerKey);
7074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) descendingKeySet.lower(key);
7082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 109) {
7083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
7084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
7085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
7087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, Integer.parseInt(lowerKey));
7093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(lowerKey);
7097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
7100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
7103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
7104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = (String) iterator.next();
7105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(199).toString(), lowerKey);
7107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
7108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.lower(null);
7109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
7110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
7111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
7112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = key;
7116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.lower(endKey));
7120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.lower(endKey));
7125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.lower(endKey));
7130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), descendingKeySet.lower(key));
7131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.lower(endKey));
7136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), descendingKeySet.lower(key));
7137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
7139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
7140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) descendingKeySet.lower(key);
7147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 108) {
7148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
7149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
7150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
7152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, Integer.parseInt(lowerKey));
7158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(lowerKey);
7162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
7164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) descendingKeySet.lower(key);
7171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 109) {
7172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
7173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
7174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
7176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, Integer.parseInt(lowerKey));
7182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(lowerKey);
7186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
7188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) descendingKeySet.lower(key);
7195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 108) {
7196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
7197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
7198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
7200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, Integer.parseInt(lowerKey));
7206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) descendingKeySet.lower(key);
7209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(lowerKey);
7210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
7212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) descendingKeySet.lower(key);
7219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 109) {
7220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
7221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
7222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
7224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_higher() {
7229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingKeySet;
7230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
7231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key, higherKey;
7232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value, higherValue;
7233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherKey = (String) descendingKeySet.higher(key);
7241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 101) {
7242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherValue = Integer.valueOf(higherKey);
7243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, higherValue);
7244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(higherKey);
7246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("108", higherKey);
7252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
7258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, Integer.parseInt(higherKey));
7268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherKey = (String) descendingKeySet.higher(key);
7276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 101) {
7277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherValue = Integer.valueOf(higherKey);
7278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, higherValue);
7279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(higherKey);
7281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("109", higherKey);
7287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
7293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, Integer.parseInt(higherKey));
7299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherKey = (String) descendingKeySet.higher(key);
7307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 100) {
7308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherValue = Integer.valueOf(higherKey);
7309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, higherValue);
7310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(higherKey);
7312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("108", higherKey);
7318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
7324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, Integer.parseInt(higherKey));
7330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherKey = (String) descendingKeySet.higher(key);
7338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 100) {
7339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherValue = Integer.valueOf(higherKey);
7340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, higherValue);
7341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(higherKey);
7343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("109", higherKey);
7349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
7355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, Integer.parseInt(higherKey));
7361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
7364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = (String) iterator.next();
7367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(199).toString(), higherKey);
7369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
7370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.higher(null);
7371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
7372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
7373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
7374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = key;
7378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.higher(endKey));
7382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.higher(endKey));
7387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(998).toString(), descendingKeySet
7392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .higher(endKey));
7393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.higher(key));
7394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(998).toString(), descendingKeySet
7399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .higher(endKey));
7400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.higher(key));
7401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
7403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
7404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherKey = (String) descendingKeySet.higher(key);
7411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 101) {
7412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherValue = Integer.valueOf(higherKey);
7413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, higherValue);
7414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(higherKey);
7416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("108", higherKey);
7422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
7428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, Integer.parseInt(higherKey));
7438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
7440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherKey = (String) descendingKeySet.higher(key);
7447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 101) {
7448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherValue = Integer.valueOf(higherKey);
7449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, higherValue);
7450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(higherKey);
7452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("109", higherKey);
7458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
7464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, Integer.parseInt(higherKey));
7470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
7472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherKey = (String) descendingKeySet.higher(key);
7479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 100) {
7480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherValue = Integer.valueOf(higherKey);
7481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, higherValue);
7482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(higherKey);
7484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("108", higherKey);
7490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
7496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, Integer.parseInt(higherKey));
7502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
7504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
7508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
7509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
7510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            higherKey = (String) descendingKeySet.higher(key);
7511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 100) {
7512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                higherValue = Integer.valueOf(higherKey);
7513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, higherValue);
7514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
7515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(higherKey);
7516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
7517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("109", higherKey);
7522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
7528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(higherKey);
7530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, Integer.parseInt(higherKey));
7534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
7537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingKeySet.iterator();
7539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = (String) iterator.next();
7540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        higherKey = (String) descendingKeySet.higher(key);
7541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(199).toString(), higherKey);
7542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
7543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.higher(null);
7544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
7545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
7546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
7547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = key;
7551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.higher(endKey));
7555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.higher(endKey));
7560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(998).toString(), descendingKeySet
7565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .higher(endKey));
7566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.higher(key));
7567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(998).toString(), descendingKeySet
7572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .higher(endKey));
7573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.higher(key));
7574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_ceiling() {
7577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingKeySet;
7578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] keyArray;
7579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key, ceilingKey;
7580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 108; i < keyArray.length; i++) {
7586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), ceilingKey);
7588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ceilingKey = (String) descendingKeySet.ceiling(key);
7592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, Integer.parseInt(ceilingKey));
7593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ceilingKey = (String) descendingKeySet.ceiling(key);
7596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(ceilingKey);
7597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
7599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ceilingKey = (String) descendingKeySet.ceiling(key);
7600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(ceilingKey);
7601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99999).toString();
7603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ceilingKey = (String) descendingKeySet.ceiling(key);
7604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, Integer.parseInt(ceilingKey));
7605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 109; i < keyArray.length; i++) {
7611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), ceilingKey);
7613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 108; i < keyArray.length; i++) {
7620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), ceilingKey);
7622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 109; i < keyArray.length; i++) {
7629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), ceilingKey);
7631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
7635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
7637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, descendingKeySet.ceiling(iterator.next()));
7638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
7639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.ceiling(null);
7640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
7641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
7642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
7643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = key;
7647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, descendingKeySet.ceiling(endKey));
7651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.ceiling(endKey));
7656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(999).toString(), descendingKeySet
7661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .ceiling(endKey));
7662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, descendingKeySet.ceiling(key));
7663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(998).toString(), descendingKeySet
7668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .ceiling(endKey));
7669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, descendingKeySet.ceiling(key));
7670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
7672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
7673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 108; i < keyArray.length; i++) {
7678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), ceilingKey);
7680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ceilingKey = (String) descendingKeySet.ceiling(key);
7684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, Integer.parseInt(ceilingKey));
7685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ceilingKey = (String) descendingKeySet.ceiling(key);
7688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(ceilingKey);
7689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
7691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 109; i < keyArray.length; i++) {
7696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), ceilingKey);
7698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
7701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 108; i < keyArray.length; i++) {
7706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), ceilingKey);
7708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
7711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 109; i < keyArray.length; i++) {
7716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), ceilingKey);
7718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_DescendingSubMapKeySet_floor() {
7722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingKeySet;
7723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] keyArray;
7724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String floorKey;
7725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 108; i < keyArray.length; i++) {
7731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), floorKey);
7733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(0).toString();
7736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, Integer.parseInt(floorKey));
7738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(floorKey);
7742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 109; i < keyArray.length; i++) {
7748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), floorKey);
7750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, Integer.parseInt(floorKey));
7755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(floorKey);
7759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 108; i < keyArray.length; i++) {
7765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), floorKey);
7767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, Integer.parseInt(floorKey));
7772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(floorKey);
7776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 109; i < keyArray.length; i++) {
7782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), floorKey);
7784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, Integer.parseInt(floorKey));
7789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(floorKey);
7793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
7796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = descendingKeySet.iterator();
7798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, descendingKeySet.floor(iterator.next()));
7799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
7800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingKeySet.floor(null);
7801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
7802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
7803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
7804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = key;
7808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, descendingKeySet.floor(endKey));
7812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.floor(endKey));
7817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(999).toString(), descendingKeySet
7822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .floor(endKey));
7823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, descendingKeySet.floor(key));
7824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(999).toString();
7826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, false).navigableKeySet();
7827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(descendingKeySet.floor(endKey));
7829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, descendingKeySet.floor(key));
7830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
7832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
7833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 108; i < keyArray.length; i++) {
7838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), floorKey);
7840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, Integer.parseInt(floorKey));
7845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(floorKey);
7849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
7851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 109; i < keyArray.length; i++) {
7856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), floorKey);
7858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, Integer.parseInt(floorKey));
7863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(floorKey);
7867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
7869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 108; i < keyArray.length; i++) {
7874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), floorKey);
7876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, Integer.parseInt(floorKey));
7881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(floorKey);
7885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endIncluded)
7887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingKeySet = keySet.descendingSet();
7889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) descendingKeySet
7890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toArray(new String[descendingKeySet.size()]);
7891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 109; i < keyArray.length; i++) {
7892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(j - i).toString(), floorKey);
7894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
7897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, Integer.parseInt(floorKey));
7899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
7901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        floorKey = (String) descendingKeySet.floor(key);
7902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(floorKey);
7903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_last() {
7906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
7907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String firstKey1 = new Integer(108).toString();
7908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String firstKey2 = new Integer(109).toString();
7909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, keySet.last());
7912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey2, keySet.last());
7915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey1, keySet.last());
7918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(firstKey2, keySet.last());
7921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_comparator() {
7924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
7925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
7927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
7930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
7933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
7936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
7938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
7939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.comparator());
7940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollFirst_startExcluded_endExcluded() {
7943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startExcluded_endExcluded
7944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
7946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, keySet.size());
7947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 101; value < 109; value++) {
7948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollFirst());
7949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
7951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollFirst());
7952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollFirst_startExcluded_endIncluded() {
7955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startExcluded_endIncluded
7956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
7958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
7959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 101; value < 110; value++) {
7960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollFirst());
7961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
7963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollFirst());
7964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollFirst_startIncluded_endExcluded() {
7967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startIncluded_endExcluded
7968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
7970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
7971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 100; value < 109; value++) {
7972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollFirst());
7973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
7975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollFirst());
7976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollFirst_startIncluded_endIncluded() {
7979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startIncluded_endIncluded
7980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
7981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
7982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, keySet.size());
7983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 100; value < 110; value++) {
7984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollFirst());
7985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
7986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
7987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollFirst());
7988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollFirst() {
7991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
7992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = tm.headMap(endKey, true).navigableKeySet();
7993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), keySet.pollFirst());
7994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.tailMap(endKey, true).navigableKeySet();
7996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(2).toString(), keySet.pollFirst());
7997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
7998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
7999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollLast_startExcluded_endExcluded() {
8000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startExcluded_endExcluded
8001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
8002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
8003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, keySet.size());
8004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 108; value > 100; value--) {
8005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollLast());
8006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
8008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
8009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
8010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollLast_startExcluded_endIncluded() {
8012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startExcluded_endIncluded
8013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
8014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
8015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
8016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 109; value > 100; value--) {
8017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollLast());
8018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
8020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
8021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
8022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollLast_startIncluded_endExcluded() {
8024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startIncluded_endExcluded
8025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
8026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
8027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, keySet.size());
8028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 108; value > 99; value--) {
8029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollLast());
8030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
8032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
8033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
8034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollLast_startIncluded_endIncluded() {
8036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = navigableMap_startIncluded_endIncluded
8037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
8038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
8039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, keySet.size());
8040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 109; value > 99; value--) {
8041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), keySet.pollLast());
8042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.size());
8044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.pollLast());
8045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
8046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_pollLast() {
8048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
8049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet = tm.headMap(endKey, true).navigableKeySet();
8050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(2).toString(), keySet.pollLast());
8051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.tailMap(endKey, true).navigableKeySet();
8053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(999).toString(), keySet.pollLast());
8054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
8055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_descendingIterator() {
8057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
8058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
8059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
8061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.descendingIterator();
8062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 108; value > 100; value--) {
8063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
8064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
8065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
8067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
8069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
8075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.descendingIterator();
8076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 109; value > 100; value--) {
8077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
8078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
8079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
8081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
8083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
8089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.descendingIterator();
8090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 108; value > 99; value--) {
8091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
8092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
8093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
8095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
8097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
8103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.descendingIterator();
8104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 109; value > 99; value--) {
8105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
8106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
8107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
8109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
8111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
8117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
8118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.descendingIterator();
8119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(2).toString(), iterator.next());
8120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(199).toString(), iterator.next());
8121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
8122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_descendingSet() {
8124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet, descendingSet;
8125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
8126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet()
8128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingSet();
8129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
8130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingSet.iterator();
8131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 101; value < 109; value++) {
8132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
8133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
8134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
8136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
8138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet()
8144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingSet();
8145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
8146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingSet.iterator();
8147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 101; value < 110; value++) {
8148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
8149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
8150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
8152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
8154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet()
8160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingSet();
8161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
8162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingSet.iterator();
8163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 100; value < 109; value++) {
8164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
8165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
8166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
8168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
8170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet()
8176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .descendingSet();
8177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
8178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingSet.iterator();
8179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int value = 100; value < 110; value++) {
8180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
8181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(value).toString(), iterator.next());
8182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
8184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
8186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(1).toString();
8192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
8193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        descendingSet = keySet.descendingSet();
8194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = descendingSet.iterator();
8195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), iterator.next());
8196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), iterator.next());
8197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
8198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_headSet() {
8200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
8201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedSet headSet;
8202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey, key;
8203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
8204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
8206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
8207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
8227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true).size();
8231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
8237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, keySet.headSet(endKey, true).size());
8240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
8242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
8243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey);
8244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
8246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, false);
8253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, true);
8261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, j);
8267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
8270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int index;
8273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
8295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
8315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
8316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
8336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
8346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, keySet.headSet(endKey, true).size());
8349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
8351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
8352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey);
8354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
8356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, false);
8363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, true);
8371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, j);
8377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
8380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
8397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
8403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
8405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
8425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
8426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
8446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, keySet.headSet(endKey, true).size());
8449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
8451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
8458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
8466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
8468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(102, index);
8474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
8476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
8477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey);
8479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
8481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
8482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, false);
8488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
8490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, true);
8496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
8498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, j);
8502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
8505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
8529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
8551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
8552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
8572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, keySet.headSet(endKey, true).size());
8575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
8577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
8584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
8592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
8594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(102, index);
8600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
8602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
8603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey);
8605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
8607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
8608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, false);
8614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
8616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, true);
8622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
8624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, j);
8628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
8631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
8648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
8654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
8656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1).toString();
8676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
8677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
8678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
8679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = (String) iterator.next();
8680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, headSet.size());
8682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator headSetIterator = headSet.iterator();
8683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), headSetIterator.next());
8684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(headSetIterator.hasNext());
8685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSetIterator.next();
8687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(null, false);
8693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
8694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
8695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
8699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, headSet.size());
8700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSetIterator = headSet.iterator();
8701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), headSetIterator.next());
8702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), headSetIterator.next());
8703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(headSetIterator.hasNext());
8704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSetIterator.next();
8706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
8707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
8708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(null, false);
8712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
8713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
8714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
8718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
8719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
8720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
8721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
8741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true).size();
8745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
8751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, keySet.headSet(endKey, true).size());
8754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
8756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
8757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey);
8758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
8760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, false);
8767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, true);
8775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, j);
8781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
8784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
8808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
8828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
8829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
8830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
8850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
8860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, keySet.headSet(endKey, true).size());
8863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
8865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
8866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey);
8868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
8870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, false);
8877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
8883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, true);
8885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 101; iterator.hasNext(); j++) {
8887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
8890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, j);
8891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
8894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
8909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
8911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
8913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
8917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
8919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
8939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
8940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
8941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
8943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
8949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
8954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
8955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
8956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
8957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
8958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
8961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
8962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
8963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, keySet.headSet(endKey, true).size());
8964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
8966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
8967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
8973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
8975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
8981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
8983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
8984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
8985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
8986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
8987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
8988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(102, index);
8989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
8991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
8992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
8993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey);
8994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
8995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
8996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
8997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
8998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
8999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
9001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, false);
9003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
9004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
9005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
9009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, true);
9011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
9012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
9013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, j);
9017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
9020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
9021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
9022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
9029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
9030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
9038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
9044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
9046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
9053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
9060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
9066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
9067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(99).toString();
9068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
9070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
9076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
9082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
9088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey).size());
9089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, keySet.headSet(endKey, false).size());
9090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, keySet.headSet(endKey, true).size());
9091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(101).toString();
9093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
9094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
9095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
9100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
9102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
9103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(101, index);
9108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
9110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
9111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(102, index);
9116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
9118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endKey = new Integer(i).toString();
9119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey);
9121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
9122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
9123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
9124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
9128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, false);
9130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
9131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
9132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, j);
9136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSet = keySet.headSet(endKey, true);
9138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = headSet.iterator();
9139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = 100; iterator.hasNext(); j++) {
9140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i + 1, j);
9144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(109).toString();
9147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey);
9148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
9149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
9156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
9157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
9164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = headSet.iterator();
9165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(110).toString();
9172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey);
9174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, false);
9180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(endKey, true);
9186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1).toString();
9192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
9193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
9194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
9195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = (String) iterator.next();
9196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, false);
9197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, headSet.size());
9198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSetIterator = headSet.iterator();
9199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), headSetIterator.next());
9200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(headSetIterator.hasNext());
9201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSetIterator.next();
9203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
9204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
9205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(null, false);
9209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
9210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
9211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSet = keySet.headSet(endKey, true);
9215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, headSet.size());
9216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        headSetIterator = headSet.iterator();
9217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), headSetIterator.next());
9218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), headSetIterator.next());
9219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(headSetIterator.hasNext());
9220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headSetIterator.next();
9222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
9223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
9224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.headSet(null, false);
9228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
9229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
9230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
9234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_remove() {
9236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap tm_rm = new TreeMap(tm);
9237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap_startExcluded_endExcluded_rm = tm_rm.subMap(
9238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[100].toString(), false, objArray[109].toString(),
9239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
9240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(subMap_startExcluded_endExcluded_rm.remove("0"));
9241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subMap_startExcluded_endExcluded_rm.remove(null);
9243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
9244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
9245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 108; i++) {
9248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNotNull(subMap_startExcluded_endExcluded_rm
9249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .remove(new Integer(i).toString()));
9250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
9252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_tailSet() {
9254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
9255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedSet tailSet;
9256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey, key;
9257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
9258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
9260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
9261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
9283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int index;
9296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; index < 109; index++) {
9299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(101).toString();
9304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
9327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
9329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
9330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey);
9332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
9334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
9339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, true);
9341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
9347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, false);
9349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j + 1).toString(), key);
9353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, j);
9355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
9358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
9379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
9399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
9400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
9420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
9442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
9443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey);
9445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
9447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(110, j);
9452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, true);
9454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(110, j);
9460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, false);
9462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j + 1).toString(), key);
9466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
9468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
9471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
9496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
9516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
9517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
9537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
9560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(101).toString();
9562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
9585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
9587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
9588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey);
9590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
9592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
9597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, true);
9599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
9605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, false);
9607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j + 1).toString(), key);
9611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, j);
9613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
9616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
9637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
9657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
9658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
9677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
9696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(101).toString();
9702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
9727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
9728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey);
9730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
9732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(110, j);
9737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, true);
9739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(110, j);
9745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, false);
9747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j + 1).toString(), key);
9751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
9753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
9756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
9771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
9781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(1).toString();
9801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(endKey, true).navigableKeySet();
9802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
9803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
9804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = (String) iterator.next();
9805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, tailSet.size());
9807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator tailSetIterator = tailSet.iterator();
9808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(endKey, tailSetIterator.next());
9809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSetIterator.next();
9811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
9812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
9813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(null);
9817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
9818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
9819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, tailSet.size());
9824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSetIterator = tailSet.iterator();
9825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(endKey, tailSetIterator.next());
9826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, tailSet.size());
9829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSetIterator = tailSet.iterator();
9830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSetIterator.next();
9832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
9833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
9834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(null, false);
9838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
9839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
9840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(null, true);
9844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
9845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
9846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
9850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
9851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
9852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
9853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
9875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; index < 109; index++) {
9890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(101).toString();
9895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
9896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
9904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
9908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 101; iterator.hasNext(); index++) {
9914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(108, index);
9918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
9920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
9921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey);
9923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
9925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
9930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, true);
9932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
9936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
9938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, false);
9940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
9941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
9942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
9943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j + 1).toString(), key);
9944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
9945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, j);
9946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
9949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
9962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
9963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
9964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
9965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
9966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
9968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
9970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
9984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
9989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
9990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(99).toString();
9991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
9993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
9994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
9995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
9996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
9997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
9998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
9999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
10000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
10001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
10005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
10006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
10007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(100).toString();
10011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
10013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
10014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
10015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
10019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
10020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
10021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
10025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
10026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 100; iterator.hasNext(); index++) {
10027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
10029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
10031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 102; i < 109; i++) {
10033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = new Integer(i).toString();
10034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey);
10036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
10037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int j;
10038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
10039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
10040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
10041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(110, j);
10043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, true);
10045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
10046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
10047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
10048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j).toString(), key);
10049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(110, j);
10051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tailSet = keySet.tailSet(startKey, false);
10053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = tailSet.iterator();
10054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (j = i; iterator.hasNext(); j++) {
10055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                key = (String) iterator.next();
10056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(new Integer(j + 1).toString(), key);
10057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, j);
10059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(109).toString();
10062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey);
10063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
10064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
10065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
10067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
10069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, true);
10071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
10072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
10073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index).toString(), key);
10075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, index);
10077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tailSet = keySet.tailSet(startKey, false);
10079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = tailSet.iterator();
10080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (index = 109; iterator.hasNext(); index++) {
10081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(index + 1).toString(), key);
10083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, index);
10085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(110).toString();
10087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey);
10089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
10090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
10091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, true);
10095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
10096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
10097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.tailSet(startKey, false);
10101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
10102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
10103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_subSet() {
10108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
10109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedSet subSet;
10110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey, endKey, key;
10111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator startIterator, endIterator, subSetIterator;
10112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startIterator = keySet.iterator();
10115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (startIterator.hasNext()) {
10116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = (String) startIterator.next();
10117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endIterator = keySet.iterator();
10118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (endIterator.hasNext()) {
10119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endKey = (String) endIterator.next();
10120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int startIndex = Integer.valueOf(startKey);
10121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int endIndex = Integer.valueOf(endKey);
10122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (startIndex > endIndex) {
10123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, endKey);
10125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
10126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, false, endKey, false);
10132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
10133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, false, endKey, true);
10139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
10140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, true, endKey, false);
10146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
10147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, true, endKey, true);
10153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
10154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
10158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, endKey);
10159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, false, endKey, false);
10166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex + 1; subSetIterator.hasNext(); index++) {
10168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, false, endKey, true);
10173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex + 1; subSetIterator.hasNext(); index++) {
10175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, true, endKey, false);
10180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, true, endKey, true);
10187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
10193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1).toString();
10197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
10199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = (String) iterator.next();
10200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = (String) iterator.next();
10201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, endKey);
10203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSet.size());
10204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
10205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), subSetIterator.next());
10206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
10208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, false, endKey, false);
10214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subSet.size());
10215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, false, endKey, true);
10217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSet.size());
10218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
10219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), subSetIterator.next());
10220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
10222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, true, endKey, false);
10228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSet.size());
10229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
10230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), subSetIterator.next());
10231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
10233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, true, endKey, true);
10239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subSet.size());
10240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
10241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), subSetIterator.next());
10242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), subSetIterator.next());
10243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
10245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, null);
10252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, false, null, false);
10259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, false, null, true);
10266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, true, null, false);
10273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, true, null, true);
10280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, endKey);
10287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, false, endKey, false);
10294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, false, endKey, true);
10301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, true, endKey, false);
10308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, true, endKey, true);
10315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, null);
10322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, false, null, false);
10329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, false, null, true);
10336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, true, null, false);
10343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, true, null, true);
10350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
10356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
10357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .navigableKeySet();
10358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startIterator = keySet.iterator();
10359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (startIterator.hasNext()) {
10360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            startKey = (String) startIterator.next();
10361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            endIterator = keySet.iterator();
10362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (endIterator.hasNext()) {
10363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                endKey = (String) endIterator.next();
10364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int startIndex = Integer.valueOf(startKey);
10365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int endIndex = Integer.valueOf(endKey);
10366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (startIndex > endIndex) {
10367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, endKey);
10369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("should throw IllegalArgumentException");
10370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, false, endKey, false);
10376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
10377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, false, endKey, true);
10383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
10384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, true, endKey, false);
10390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
10391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    try {
10396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        keySet.subSet(startKey, true, endKey, true);
10397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        fail("shoudl throw IllegalArgumentException");
10398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } catch (IllegalArgumentException e) {
10399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Expected
10400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
10402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, endKey);
10403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, false, endKey, false);
10410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex + 1; subSetIterator.hasNext(); index++) {
10412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, false, endKey, true);
10417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex + 1; subSetIterator.hasNext(); index++) {
10419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, true, endKey, false);
10424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSet = keySet.subSet(startKey, true, endKey, true);
10431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    subSetIterator = subSet.iterator();
10432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals(new Integer(index).toString(),
10434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                subSetIterator.next());
10435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
10436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
10437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1).toString();
10441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = (String) iterator.next();
10444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = (String) iterator.next();
10445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, endKey);
10447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSet.size());
10448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
10449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), subSetIterator.next());
10450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
10452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, false, endKey, false);
10458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subSet.size());
10459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, false, endKey, true);
10461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSet.size());
10462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
10463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), subSetIterator.next());
10464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
10466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, true, endKey, false);
10472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subSet.size());
10473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
10474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), subSetIterator.next());
10475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
10477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSet = keySet.subSet(startKey, true, endKey, true);
10483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(2, subSet.size());
10484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subSetIterator = subSet.iterator();
10485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(0).toString(), subSetIterator.next());
10486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), subSetIterator.next());
10487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSetIterator.next();
10489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, null);
10496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, false, null, false);
10503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, false, null, true);
10510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, true, null, false);
10517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, true, null, true);
10524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, endKey);
10531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, false, endKey, false);
10538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, false, endKey, true);
10545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, true, endKey, false);
10552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(null, true, endKey, true);
10559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, null);
10566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, false, null, false);
10573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, false, null, true);
10580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, true, null, false);
10587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.subSet(startKey, true, null, true);
10594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_lower() {
10602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
10603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
10604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key, lowerKey;
10605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value, lowerValue;
10606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
10610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
10612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) keySet.lower(key);
10613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 101) {
10614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
10615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, lowerValue);
10616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
10617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
10618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
10624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
10626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) keySet.lower(key);
10627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 101) {
10628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
10629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, lowerValue);
10630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
10631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
10632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
10636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
10638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
10640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) keySet.lower(key);
10641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 100) {
10642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
10643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, lowerValue);
10644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
10645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
10646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
10650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
10652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
10654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) keySet.lower(key);
10655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value > 100) {
10656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
10657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value - 1, lowerValue);
10658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
10659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
10660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
10664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();// 0
10667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String expectedLowerKey = (String) iterator.next();// 1
10668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(expectedLowerKey, keySet.lower(iterator.next()));
10669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.lower(null);
10672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
10678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.lower(key));
10680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
10682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, false).navigableKeySet();
10683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.lower(key));
10684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(999).toString();
10686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(keySet.lower(key));
10688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(999).toString();
10690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, false).navigableKeySet();
10691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(keySet.lower(key));
10692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_higher() {
10695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
10696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
10697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key, lowerKey;
10698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value, lowerValue;
10699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
10703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
10705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) keySet.higher(key);
10706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 108) {
10707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
10708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
10709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
10710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
10711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
10717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
10719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) keySet.higher(key);
10720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 109) {
10721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
10722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
10723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
10724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
10725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
10729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
10731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
10733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) keySet.higher(key);
10734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 108) {
10735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
10736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
10737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
10738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
10739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
10743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (iterator.hasNext()) {
10745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) iterator.next();
10746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            value = Integer.valueOf(key);
10747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lowerKey = (String) keySet.higher(key);
10748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (value < 109) {
10749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerValue = Integer.valueOf(lowerKey);
10750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value + 1, lowerValue);
10751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
10752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(lowerKey);
10753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
10754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
10757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
10759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();// 0
10760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();// 1
10761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lowerKey = (String) keySet.higher(iterator.next());
10762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String expectedLowerKey = (String) iterator.next();
10763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(expectedLowerKey, lowerKey);
10764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.higher(null);
10767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
10773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.higher(key));
10775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
10777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, false).navigableKeySet();
10778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.higher(key));
10779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(999).toString();
10781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.higher(key));
10783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(999).toString();
10785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, false).navigableKeySet();
10786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.higher(key));
10787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_ceiling() {
10790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
10791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key;
10792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] keyArray;
10793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101; i < keyArray.length; i++) {
10797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) keySet.ceiling(keyArray[i]);
10798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i + j).toString(), key);
10799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101; i < keyArray.length; i++) {
10804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) keySet.ceiling(keyArray[i]);
10805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i + j).toString(), key);
10806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
10809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 100; i < keyArray.length; i++) {
10811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) keySet.ceiling(keyArray[i]);
10812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i + j).toString(), key);
10813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
10816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 100; i < keyArray.length; i++) {
10818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) keySet.ceiling(keyArray[i]);
10819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i + j).toString(), key);
10820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
10823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
10825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
10826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), keySet.ceiling(iterator.next()));
10827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.ceiling(null);
10830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
10836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, keySet.ceiling(key));
10838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
10840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, false).navigableKeySet();
10841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.higher(key));
10842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(999).toString();
10844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.higher(key));
10846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(999).toString();
10848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, false).navigableKeySet();
10849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.higher(key));
10850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapKeySet_floor() {
10853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet keySet;
10854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key;
10855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] keyArray;
10856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101; i < keyArray.length; i++) {
10860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) keySet.floor(keyArray[i]);
10861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i + j).toString(), key);
10862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 101; i < keyArray.length; i++) {
10867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) keySet.floor(keyArray[i]);
10868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i + j).toString(), key);
10869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
10872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 100; i < keyArray.length; i++) {
10874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) keySet.floor(keyArray[i]);
10875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i + j).toString(), key);
10876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
10879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0, j = 100; i < keyArray.length; i++) {
10881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = (String) keySet.floor(keyArray[i]);
10882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i + j).toString(), key);
10883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(2).toString();
10886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
10888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator.next();
10889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(1).toString(), keySet.floor(iterator.next()));
10890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.floor(null);
10893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NPE");
10894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
10895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
10899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, keySet.floor(key));
10901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(0).toString();
10903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, false).navigableKeySet();
10904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(keySet.floor(key));
10905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(999).toString();
10907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, true).navigableKeySet();
10908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(key, keySet.floor(key));
10909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(999).toString();
10911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = tm.headMap(key, false).navigableKeySet();
10912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Integer(998).toString(), keySet.floor(key));
10913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_BoundedEntryIterator_next() {
10916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = subMap_default.entrySet().iterator();
10917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(iterator.hasNext());
10918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 100; iterator.hasNext(); i++) {
10919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, ((Entry) iterator.next()).getValue());
10920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
10924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw java.util.NoSuchElementException");
10925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_BoundedKeyIterator_next() {
10932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = subMap_default.keySet().iterator();
10933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(iterator.hasNext());
10934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 100; iterator.hasNext(); i++) {
10935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(i).toString(), iterator.next());
10936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
10940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw java.util.NoSuchElementException");
10941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_BoundedValueIterator_next() {
10947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(101).toString();
10948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(108).toString();
10949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collection values = tm.subMap(startKey, endKey).values();
10951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iter = values.iterator();
10952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 108; i++) {
10953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(i, iter.next());
10954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iter.next();
10957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw java.util.NoSuchElementException");
10958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
10959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
10964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * SubMapEntrySet
10965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
10966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapEntrySet_Constructor() {
10967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapEntrySet_contains() {
10970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // covered in test_SubMapEntrySet_remove
10971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
10972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapEntrySet_iterator() {
10974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = subMap_default.entrySet();
10975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
10976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
10977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer value = new Integer(100);
10978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
10979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
10980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
10981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
10982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value.intValue());
10984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
10985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
10986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
10987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
10988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
10989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded.entrySet();
10992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(101);
10993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
10994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
10995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
10996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
10997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
10998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value.intValue());
10999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded.entrySet();
11007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(101);
11008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
11010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
11011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
11012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, value.intValue());
11014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded.entrySet();
11022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(100);
11023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
11025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
11026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
11027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value.intValue());
11029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded.entrySet();
11037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(100);
11038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
11040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
11041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
11042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, value.intValue());
11044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(-1).toString();
11052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(0).toString();
11053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap = tm.subMap(startKey, endKey);
11054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap.entrySet();
11055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = entrySet.iterator();
11056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(1).toString();
11064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap.entrySet();
11066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = entrySet.iterator();
11067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, ((Entry) iterator.next()).getValue());
11068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(2000).toString();
11076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap.entrySet();
11078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = entrySet.iterator();
11079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < subMap.size(); i++) {
11080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(9).toString();
11090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(100).toString();
11091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tm.subMap(startKey, endKey);
11093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
11094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
11095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
11099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_default_comparator.entrySet();
11100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(100);
11101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
11103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
11104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
11105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value.intValue());
11107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
11115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(101);
11116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
11118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
11119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
11120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value.intValue());
11122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
11130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(101);
11131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
11133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
11134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
11135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, value.intValue());
11137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
11145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(100);
11146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
11148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
11149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
11150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(109, value.intValue());
11152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
11160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        value = new Integer(100);
11161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
11163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value.toString(), entry.getKey());
11164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(value, entry.getValue());
11165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(110, value.intValue());
11167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapEntrySet_remove() {
11176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = subMap_default.entrySet();
11177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.remove(null));
11178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int size = entrySet.size();
11179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = entrySet.iterator();
11181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(entrySet.remove(iterator.next()));
11182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded.entrySet();
11185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.remove(null));
11186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        size = entrySet.size();
11187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = entrySet.iterator();
11189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(entrySet.remove(iterator.next()));
11190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded.entrySet();
11193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.remove(null));
11194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        size = entrySet.size();
11195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = entrySet.iterator();
11197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(entrySet.remove(iterator.next()));
11198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded.entrySet();
11201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.remove(null));
11202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        size = entrySet.size();
11203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = entrySet.iterator();
11205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(entrySet.remove(iterator.next()));
11206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded.entrySet();
11209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(entrySet.remove(null));
11210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        size = entrySet.size();
11211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = entrySet.iterator();
11213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(entrySet.remove(iterator.next()));
11214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapEntrySet_isEmpty() {
11218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_default.entrySet().isEmpty());
11219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startExcluded_endExcluded.entrySet().isEmpty());
11220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startExcluded_endIncluded.entrySet().isEmpty());
11221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startIncluded_endExcluded.entrySet().isEmpty());
11222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startIncluded_endIncluded.entrySet().isEmpty());
11223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(0).toString();
11225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = startKey;
11226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap = tm.subMap(startKey, endKey);
11227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.entrySet().isEmpty());
11228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(-1).toString();
11230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.entrySet().isEmpty());
11232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(1).toString();
11234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap.entrySet().isEmpty());
11236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapEntrySet_size() {
11239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_default.entrySet().size());
11240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, subMap_startExcluded_endExcluded.entrySet().size());
11241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_startExcluded_endIncluded.entrySet().size());
11242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_startIncluded_endExcluded.entrySet().size());
11243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, subMap_startIncluded_endIncluded.entrySet().size());
11244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(0).toString();
11246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
11247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap = tm.subMap(startKey, endKey);
11248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(112, subMap.entrySet().size());
11249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(0).toString();
11251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = startKey;
11252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subMap.entrySet().size());
11254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(-1).toString();
11256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = startKey;
11257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subMap.entrySet().size());
11259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(1).toString();
11261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subMap.entrySet().size());
11263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(999).toString();
11265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = startKey;
11266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subMap.entrySet().size());
11268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
11271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * SubMapKeySet
11272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
11273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapKeySet_Constructor() {
11274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // covered in other test
11275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapKeySet_iterator() {
11278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set keySet = subMap_default.keySet();
11279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator = keySet.iterator();
11280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(100 + i).toString(), iterator.next());
11282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endExcluded.keySet();
11292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(101 + i).toString(), iterator.next());
11295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endIncluded.keySet();
11305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(101 + i).toString(), iterator.next());
11308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endExcluded.keySet();
11318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(100 + i).toString(), iterator.next());
11321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endIncluded.keySet();
11331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(100 + i).toString(), iterator.next());
11334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
11344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_default_comparator.keySet();
11345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(100 + i).toString(), iterator.next());
11348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endExcluded_comparator.keySet();
11358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(101 + i).toString(), iterator.next());
11361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endIncluded_comparator.keySet();
11371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(101 + i).toString(), iterator.next());
11374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endExcluded_comparator.keySet();
11384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(100 + i).toString(), iterator.next());
11387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endIncluded_comparator.keySet();
11397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        iterator = keySet.iterator();
11398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < keySet.size(); i++) {
11399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Integer(100 + i).toString(), iterator.next());
11400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(iterator.hasNext());
11402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
11404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
11405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NoSuchElementException e) {
11406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapKeySet_isEmpty() {
11411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_default.keySet().isEmpty());
11412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startExcluded_endExcluded.keySet().isEmpty());
11413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startExcluded_endIncluded.keySet().isEmpty());
11414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startIncluded_endExcluded.keySet().isEmpty());
11415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap_startIncluded_endIncluded.keySet().isEmpty());
11416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(0).toString();
11418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = startKey;
11419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap = tm.subMap(startKey, endKey);
11420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.keySet().isEmpty());
11421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(999).toString();
11423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = startKey;
11424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.keySet().isEmpty());
11426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(-1).toString();
11428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(1).toString();
11429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subMap.keySet().isEmpty());
11431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(0).toString();
11433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap.keySet().isEmpty());
11435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapKeySet_contains() {
11438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set keySet = subMap_default.keySet();
11439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.contains(null);
11441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String key = new Integer(-1).toString();
11446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99).toString();
11448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
11450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(keySet.contains(key));
11451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
11452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
11453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.contains(key));
11454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
11456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(110).toString();
11458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1001).toString();
11460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endExcluded.keySet();
11463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.contains(null);
11465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
11470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99).toString();
11472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
11474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
11476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
11477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.contains(key));
11478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
11480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(110).toString();
11482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1001).toString();
11484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endIncluded.keySet();
11487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.contains(null);
11489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
11494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99).toString();
11496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
11498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
11500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
11501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.contains(key));
11502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
11504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(keySet.contains(key));
11505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(110).toString();
11506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1001).toString();
11508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endExcluded.keySet();
11511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.contains(null);
11513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
11518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99).toString();
11520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
11522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(keySet.contains(key));
11523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
11524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
11525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.contains(key));
11526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
11528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(110).toString();
11530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1001).toString();
11532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endIncluded.keySet();
11535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.contains(null);
11537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(-1).toString();
11542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(99).toString();
11544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(100).toString();
11546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(keySet.contains(key));
11547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 101; i < 109; i++) {
11548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            key = new Integer(i).toString();
11549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.contains(key));
11550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(109).toString();
11552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(keySet.contains(key));
11553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(110).toString();
11554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        key = new Integer(1001).toString();
11556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(keySet.contains(key));
11557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapKeySet_size() {
11560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_default.keySet().size());
11561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(8, subMap_startExcluded_endExcluded.keySet().size());
11562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_startExcluded_endIncluded.keySet().size());
11563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(9, subMap_startIncluded_endExcluded.keySet().size());
11564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, subMap_startIncluded_endIncluded.keySet().size());
11565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(0).toString();
11567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
11568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SortedMap subMap = tm.subMap(startKey, endKey);
11569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(112, subMap.keySet().size());
11570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(0).toString();
11572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = startKey;
11573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subMap.keySet().size());
11575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(-1).toString();
11577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = startKey;
11578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subMap.keySet().size());
11580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = new Integer(1).toString();
11582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, subMap.keySet().size());
11584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        startKey = new Integer(999).toString();
11586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        endKey = startKey;
11587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap = tm.subMap(startKey, endKey);
11588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, subMap.keySet().size());
11589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_SubMapKeySet_remove() {
11592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set keySet = subMap_default.keySet();
11593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.remove(null);
11595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int size = keySet.size();
11600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = keySet.iterator();
11602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.remove(iterator.next()));
11603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endExcluded.keySet();
11606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.remove(null);
11608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        size = keySet.size();
11613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = keySet.iterator();
11615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.remove(iterator.next()));
11616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startExcluded_endIncluded.keySet();
11619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.remove(null);
11621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        size = keySet.size();
11626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = keySet.iterator();
11628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.remove(iterator.next()));
11629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endExcluded.keySet();
11632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.remove(null);
11634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        size = keySet.size();
11639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = keySet.iterator();
11641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.remove(iterator.next()));
11642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        keySet = subMap_startIncluded_endIncluded.keySet();
11645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
11646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            keySet.remove(null);
11647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
11648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
11649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
11650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        size = keySet.size();
11652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < size; i++) {
11653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = keySet.iterator();
11654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(keySet.remove(iterator.next()));
11655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
11659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * AscendingSubMapEntrySet
11660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
11661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_comparator() {
11663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
11664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
11665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.comparator());
11670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.comparator());
11676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.comparator());
11682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.comparator());
11688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_descendingSet() {
11692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
11693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet, descendingSet;
11694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
11695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
11696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
11697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
11702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.iterator();
11703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (value = 108; iterator.hasNext(); value--) {
11705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, value);
11709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
11715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.iterator();
11716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (value = 109; iterator.hasNext(); value--) {
11718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, value);
11722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
11728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.iterator();
11729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (value = 108; iterator.hasNext(); value--) {
11731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(99, value);
11735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            descendingSet = ascendingSubMapEntrySet.descendingSet();
11741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = descendingSet.iterator();
11742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (value = 109; iterator.hasNext(); value--) {
11744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(99, value);
11748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_descendingIterator() {
11752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
11753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
11754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
11755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
11756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
11757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.descendingIterator();
11762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (value = 108; iterator.hasNext(); value--) {
11764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, value);
11768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.descendingIterator();
11774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (value = 109; iterator.hasNext(); value--) {
11776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(100, value);
11780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.descendingIterator();
11786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (value = 108; iterator.hasNext(); value--) {
11788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(99, value);
11792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.descendingIterator();
11798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (value = 109; iterator.hasNext(); value--) {
11800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(99, value);
11804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String startKey = new Integer(2).toString();
11807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(startKey, true).entrySet();
11808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.descendingIterator();
11811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(iterator.hasNext());
11812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, ((Entry) iterator.next()).getValue());
11813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_pollFirst_startExcluded_endExcluded() {
11817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 101; value < 109; value++) {
11821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry entry = (Entry) ascendingSubMapEntrySet.pollFirst();
11822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(ascendingSubMapEntrySet.isEmpty());
11825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // should return null if the set is empty.
11826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.pollFirst());
11827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_pollFirst_startExcluded_endIncluded() {
11831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 101; value < 110; value++) {
11835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry entry = (Entry) ascendingSubMapEntrySet.pollFirst();
11836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(ascendingSubMapEntrySet.isEmpty());
11839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // should return null if the set is empty.
11840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.pollFirst());
11841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_pollFirst_startIncluded_endExcluded() {
11845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 100; value < 109; value++) {
11849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry entry = (Entry) ascendingSubMapEntrySet.pollFirst();
11850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(ascendingSubMapEntrySet.isEmpty());
11853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // should return null if the set is empty.
11854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.pollFirst());
11855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_pollFirst_startIncluded_endIncluded() {
11859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 100; value < 110; value++) {
11863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry entry = (Entry) ascendingSubMapEntrySet.pollFirst();
11864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(ascendingSubMapEntrySet.isEmpty());
11867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // should return null if the set is empty.
11868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.pollFirst());
11869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_pollLast_startExcluded_endExcluded() {
11873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 108; value > 100; value--) {
11877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry entry = (Entry) ascendingSubMapEntrySet.pollLast();
11878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(ascendingSubMapEntrySet.isEmpty());
11881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // should return null if the set is empty
11882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.pollLast());
11883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // NavigableMap ascendingSubMap = tm.headMap("2", true);
11886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Set entrySet = ascendingSubMap.entrySet();
11887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Object last;
11888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // if (entrySet instanceof NavigableSet) {
11889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // last = ((NavigableSet) entrySet).pollLast();
11890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertEquals("2=2", last.toString());
11891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // }
11892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
11893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // ascendingSubMap = tm.tailMap("2", true);
11894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // entrySet = ascendingSubMap.entrySet();
11895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // if (entrySet instanceof NavigableSet) {
11896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // last = ((NavigableSet) entrySet).pollLast();
11897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertEquals("999=999", last.toString());
11898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // }
11899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_pollLast_startExcluded_endIncluded() {
11902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 109; value > 100; value--) {
11906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry entry = (Entry) ascendingSubMapEntrySet.pollLast();
11907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(ascendingSubMapEntrySet.isEmpty());
11910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // should return null if the set is empty
11911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.pollLast());
11912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_pollLast_startIncluded_endExcluded() {
11916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 108; value > 99; value--) {
11920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry entry = (Entry) ascendingSubMapEntrySet.pollLast();
11921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(ascendingSubMapEntrySet.isEmpty());
11924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // should return null if the set is empty
11925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.pollLast());
11926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_pollLast_startIncluded_endIncluded() {
11930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int value = 109; value > 99; value--) {
11934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry entry = (Entry) ascendingSubMapEntrySet.pollLast();
11935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, entry.getValue());
11936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(ascendingSubMapEntrySet.isEmpty());
11938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // should return null if the set is empty
11939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(ascendingSubMapEntrySet.pollLast());
11940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
11942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_headSet() {
11944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet, headSet;
11945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
11946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator, headSetIterator;
11947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
11948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
11949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
11952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
11954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
11955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
11956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry);
11957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
11958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 101; headSetIterator.hasNext(); value++) {
11959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
11960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
11961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
11962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value);
11963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
11964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
11965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
11966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
11967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
11968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
11969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry, false);
11971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
11972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 101; headSetIterator.hasNext(); value++) {
11973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
11974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
11975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
11976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value);
11977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
11978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
11979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
11980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
11981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
11982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
11983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
11984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry, true);
11985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
11986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 101; headSetIterator.hasNext(); value++) {
11987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
11988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
11989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
11990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value - 1);
11991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
11992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
11993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
11994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
11995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
11996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
11997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
11998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
11999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry);
12007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 101; headSetIterator.hasNext(); value++) {
12009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value);
12013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry, false);
12021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 101; headSetIterator.hasNext(); value++) {
12023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value);
12027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry, true);
12035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 101; headSetIterator.hasNext(); value++) {
12037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value - 1);
12041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry);
12057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 100; headSetIterator.hasNext(); value++) {
12059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value);
12063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry, false);
12071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 100; headSetIterator.hasNext(); value++) {
12073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value);
12077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry, true);
12085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 100; headSetIterator.hasNext(); value++) {
12087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value - 1);
12091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry);
12107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 100; headSetIterator.hasNext(); value++) {
12109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value);
12113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry, false);
12121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 100; headSetIterator.hasNext(); value++) {
12123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value);
12127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSet = ascendingSubMapEntrySet.headSet(entry, true);
12135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                headSetIterator = headSet.iterator();
12136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = 100; headSetIterator.hasNext(); value++) {
12137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) headSetIterator.next())
12138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), value - 1);
12141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    headSetIterator.next();
12143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // NavigableMap ascendingSubMap = tm.headMap("1", true);
12151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // entrySet = ascendingSubMap.entrySet();
12152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // if (entrySet instanceof SortedSet) {
12153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Iterator it = entrySet.iterator();
12154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // it.next();
12155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Object end = it.next();// 1=1
12156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Set headSet = ((NavigableSet) entrySet).headSet(end);// inclusive
12157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // // false
12158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertEquals(1, headSet.size());
12159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // }
12160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
12161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_tailSet() {
12163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet, tailSet;
12164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
12165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator, tailSetIterator;
12166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry;
12167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
12168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = entrySet.iterator();
12173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry);
12176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(109, value);
12183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry, false);
12191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(109, value);
12198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry, true);
12206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
12208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(109, value);
12213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = entrySet.iterator();
12226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry);
12229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(110, value);
12236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry, false);
12244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(110, value);
12251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry, true);
12259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
12261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(110, value);
12266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = entrySet.iterator();
12279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry);
12282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(109, value);
12289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry, false);
12297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(109, value);
12304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry, true);
12312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
12314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(109, value);
12319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = entrySet.iterator();
12332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry);
12335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(110, value);
12342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry, false);
12350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(110, value);
12357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSet = ascendingSubMapEntrySet.tailSet(entry, true);
12365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                tailSetIterator = tailSet.iterator();
12366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (value = (Integer) entry.getValue(); tailSetIterator
12367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .hasNext(); value++) {
12368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value, ((Entry) tailSetIterator.next())
12369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getValue());
12370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(110, value);
12372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
12373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tailSetIterator.next();
12374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail("should throw NoSuchElementException");
12375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (NoSuchElementException e) {
12376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // Expected
12377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // NavigableMap ascendingSubMap = tm.headMap("1", true);
12382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Set entrySet = ascendingSubMap.entrySet();
12383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // if (entrySet instanceof NavigableSet) {
12384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Iterator it = entrySet.iterator();
12385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Object start = it.next();// 0=0
12386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Set tailSet = ((NavigableSet) entrySet).tailSet(start);// default
12387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // // inclusive
12388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // // false
12389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertEquals(1, tailSet.size());
12390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // }
12391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
12392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_subSet() {
12394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet, subSet;
12395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
12396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iteratorStart = ascendingSubMapEntrySet.iterator();
12401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iteratorStart.hasNext()) {
12402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Entry startEntry = (Entry) iteratorStart.next();
12403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Iterator iteratorEnd = ascendingSubMapEntrySet.iterator();
12404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                while (iteratorEnd.hasNext()) {
12405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    Entry endEntry = (Entry) iteratorEnd.next();
12406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    int startIndex = (Integer) startEntry.getValue();
12407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    int endIndex = (Integer) endEntry.getValue();
12408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (startIndex > endIndex) {
12409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
12410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            ascendingSubMapEntrySet
12411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .subSet(startEntry, endEntry);
12412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
12413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
12414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
12415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
12418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            ascendingSubMapEntrySet.subSet(startEntry, false,
12419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, false);
12420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
12421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
12422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
12423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
12426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            ascendingSubMapEntrySet.subSet(startEntry, false,
12427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, true);
12428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
12429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
12430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
12431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
12434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            ascendingSubMapEntrySet.subSet(startEntry, true,
12435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, false);
12436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
12437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
12438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
12439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        try {
12442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            ascendingSubMapEntrySet.subSet(startEntry, true,
12443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    endEntry, true);
12444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            fail("should throw IllegalArgumentException");
12445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        } catch (IllegalArgumentException e) {
12446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            // Expected
12447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } else {
12449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                endEntry);
12451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        Iterator subSetIterator = subSet.iterator();
12452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex + 1; subSetIterator
12453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .hasNext(); index++) {
12454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
12455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
12456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                false, endEntry, false);
12460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
12461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex + 1; subSetIterator
12462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .hasNext(); index++) {
12463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
12464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
12465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                false, endEntry, true);
12469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
12470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex + 1; subSetIterator
12471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .hasNext(); index++) {
12472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
12473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
12474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                true, endEntry, false);
12478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
12479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex; subSetIterator.hasNext(); index++) {
12480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
12481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
12482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                true, endEntry, true);
12486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        subSetIterator = subSet.iterator();
12487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        for (int index = startIndex; subSetIterator.hasNext(); index++) {
12488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            assertEquals(index, ((Entry) subSetIterator.next())
12489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    .getValue());
12490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        }
12491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
12492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
12497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
12498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Iterator iterator = entrySet.iterator();
12501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object startEntry = iterator.next();
12502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator.next();
12503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object endEntry = iterator.next();
12504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = ascendingSubMapEntrySet.subSet(startEntry, endEntry);
12505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(1, subSet.size());
12506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = ascendingSubMapEntrySet.subSet(startEntry, false,
12508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endEntry, false);
12509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(1, subSet.size());
12510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = ascendingSubMapEntrySet.subSet(startEntry, false,
12512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    endEntry, true);
12513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, subSet.size());
12514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = ascendingSubMapEntrySet.subSet(startEntry, true, endEntry,
12516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    false);
12517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(2, subSet.size());
12518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            subSet = ascendingSubMapEntrySet.subSet(startEntry, true, endEntry,
12520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    true);
12521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(3, subSet.size());
12522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
12524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_lower() {
12526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
12527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
12528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
12529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry, lowerEntry;
12530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
12531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 101) {
12541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, lowerEntry.getValue());
12542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 101) {
12557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, lowerEntry.getValue());
12558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 100) {
12573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, lowerEntry.getValue());
12574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 100) {
12589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, lowerEntry.getValue());
12590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
12597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
12598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = entrySet.iterator();
12601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Entry expectedEntry = (Entry) iterator.next();
12602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
12603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(expectedEntry, ascendingSubMapEntrySet.lower(entry));
12604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
12607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
12609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 101) {
12617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, lowerEntry.getValue());
12618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
12625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 101) {
12633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, lowerEntry.getValue());
12634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
12641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 100) {
12649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, lowerEntry.getValue());
12650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
12657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value > 100) {
12665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value - 1, lowerEntry.getValue());
12666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
12672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_higher() {
12674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
12675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
12676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
12677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry, lowerEntry;
12678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
12679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 108) {
12689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
12690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 109) {
12705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
12706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 108) {
12721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
12722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 109) {
12737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
12738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String endKey = new Integer(2).toString();
12745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = tm.headMap(endKey, true).entrySet();
12746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = entrySet.iterator();
12749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            entry = (Entry) iterator.next();
12750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Entry expectedEntry = (Entry) iterator.next();
12751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(expectedEntry, ascendingSubMapEntrySet.higher(entry));
12752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
12755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
12756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 108) {
12764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
12765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
12772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 109) {
12780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
12781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
12788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 108) {
12796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
12797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
12804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (value < 109) {
12812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(value + 1, lowerEntry.getValue());
12813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
12814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertNull(lowerEntry);
12815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
12816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
12819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_ceiling() {
12821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
12822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
12823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
12824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet_beyondBound;
12826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator_beyondBound;
12827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry beyondBoundEntry;
12828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry, lowerEntry;
12830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value = 0;
12831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
12836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.ceiling(null);
12837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
12838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
12839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
12840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, lowerEntry.getValue());
12848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, value);
12850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
12857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.ceiling(null);
12858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
12859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
12860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
12861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, lowerEntry.getValue());
12869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, value);
12871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
12877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.ceiling(null);
12878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
12879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
12880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
12881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, lowerEntry.getValue());
12889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, value);
12891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
12897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.ceiling(null);
12898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
12899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
12900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
12901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, lowerEntry.getValue());
12909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, value);
12911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
12914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
12915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
12918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.ceiling(null);
12919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
12920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
12921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
12922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, lowerEntry.getValue());
12930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, value);
12932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
12935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
12938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.ceiling(null);
12939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
12940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
12941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
12942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, lowerEntry.getValue());
12950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, value);
12952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
12955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
12958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.ceiling(null);
12959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
12960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
12961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
12962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, lowerEntry.getValue());
12970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(109, value);
12972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
12975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
12976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
12978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.ceiling(null);
12979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
12980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
12981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
12982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
12985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (iterator.hasNext()) {
12986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
12987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                value = (Integer) entry.getValue();
12989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(value, lowerEntry.getValue());
12990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
12991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(108, value);
12992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
12993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
12994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
12995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_AscendingSubMapEntrySet_floor() {
12996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set entrySet;
12997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableSet ascendingSubMapEntrySet;
12998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator iterator;
12999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Entry entry, floorEntry;
13000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int value;
13001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
13003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
13004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
13006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.floor(null);
13007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
13008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
13009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
13010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
13013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 101; i < 109; i++) {
13014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
13015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), floorEntry.getValue());
13017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
13019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
13022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
13023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
13025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.floor(null);
13026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
13027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
13028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
13029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
13032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 101; i < 110; i++) {
13033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
13034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), floorEntry.getValue());
13036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
13038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
13041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
13042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
13044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.floor(null);
13045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
13046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
13047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
13048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
13051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 100; i < 109; i++) {
13052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
13053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), floorEntry.getValue());
13055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
13057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
13060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
13061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
13063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.floor(null);
13064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
13065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
13066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
13067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
13070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 100; i < 110; i++) {
13071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
13072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), floorEntry.getValue());
13074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
13076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // With Comparator
13079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
13080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
13081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
13083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.floor(null);
13084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
13085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
13086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
13087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
13090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 101; i < 109; i++) {
13091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
13092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), floorEntry.getValue());
13094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
13096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
13099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
13100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
13102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.floor(null);
13103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
13104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
13105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
13106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
13109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 101; i < 110; i++) {
13110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
13111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), floorEntry.getValue());
13113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
13115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
13118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
13119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
13121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.floor(null);
13122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
13123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
13124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
13125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
13128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 100; i < 109; i++) {
13129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
13130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), floorEntry.getValue());
13132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
13134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        entrySet = subMap_startIncluded_endIncluded.entrySet();
13137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (entrySet instanceof NavigableSet) {
13138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
13140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ascendingSubMapEntrySet.floor(null);
13141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("should throw NullPointerException");
13142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (NullPointerException e) {
13143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
13144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            iterator = ascendingSubMapEntrySet.iterator();
13147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 100; i < 110; i++) {
13148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                entry = (Entry) iterator.next();
13149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(entry.getValue(), floorEntry.getValue());
13151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(iterator.hasNext());
13153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @Override
13157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() {
13158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tm = new TreeMap();
13159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tm_comparator = new TreeMap(new MockComparator());
13160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < objArray.length; i++) {
13161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Object x = objArray[i] = new Integer(i);
13162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tm.put(x.toString(), x);
13163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tm_comparator.put(x.toString(), x);
13164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default = tm.subMap(objArray[100].toString(), objArray[109]
13167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString());
13168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endExcluded = tm.subMap(objArray[100].toString(),
13169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false, objArray[109].toString(), false);
13170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endIncluded = tm.subMap(objArray[100].toString(),
13171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false, objArray[109].toString(), true);
13172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endExcluded = tm.subMap(objArray[100].toString(),
13173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                true, objArray[109].toString(), false);
13174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endIncluded = tm.subMap(objArray[100].toString(),
13175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                true, objArray[109].toString(), true);
13176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default_beforeStart_100 = tm.subMap(objArray[0].toString(),
13178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[1].toString());
13179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default_afterEnd_109 = tm.subMap(objArray[110].toString(),
13181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[119].toString());
13182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap_startExcluded_endExcluded instanceof NavigableMap);
13184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap_startExcluded_endIncluded instanceof NavigableMap);
13185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap_startIncluded_endExcluded instanceof NavigableMap);
13186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subMap_startIncluded_endIncluded instanceof NavigableMap);
13187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        navigableMap_startExcluded_endExcluded = (NavigableMap) subMap_startExcluded_endExcluded;
13189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        navigableMap_startExcluded_endIncluded = (NavigableMap) subMap_startExcluded_endIncluded;
13190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        navigableMap_startIncluded_endExcluded = (NavigableMap) subMap_startIncluded_endExcluded;
13191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        navigableMap_startIncluded_endIncluded = (NavigableMap) subMap_startIncluded_endIncluded;
13192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default_comparator = tm_comparator.subMap(objArray[100]
13194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString(), objArray[109].toString());
13195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endExcluded_comparator = tm_comparator.subMap(
13196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[100].toString(), false, objArray[109].toString(),
13197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                false);
13198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endIncluded_comparator = tm_comparator
13200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .subMap(objArray[100].toString(), false, objArray[109]
13201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .toString(), true);
13202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endExcluded_comparator = tm_comparator
13203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .subMap(objArray[100].toString(), true, objArray[109]
13204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .toString(), false);
13205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endIncluded_comparator = tm_comparator.subMap(
13206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[100].toString(), true, objArray[109].toString(), true);
13207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @Override
13210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() {
13211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tm = null;
13212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tm_comparator = null;
13213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default = null;
13215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endExcluded = null;
13216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endIncluded = null;
13217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endExcluded = null;
13218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endIncluded = null;
13219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default_beforeStart_100 = null;
13221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default_afterEnd_109 = null;
13222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_default_comparator = null;
13224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endExcluded_comparator = null;
13225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startExcluded_endIncluded_comparator = null;
13226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endExcluded_comparator = null;
13227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subMap_startIncluded_endIncluded_comparator = null;
13228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_lower_null() throws Exception {
13231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap map = tm.subMap(objArray[100].toString(), true,
13232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[100].toString(), false);
13233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.ceilingKey(objArray[100].toString()));
13234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.floorKey(objArray[100].toString()));
13235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.lowerKey(objArray[100].toString()));
13236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.higherKey(objArray[100].toString()));
13237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.ceilingKey(objArray[111].toString()));
13238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.floorKey(objArray[111].toString()));
13239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.lowerKey(objArray[111].toString()));
13240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.higherKey(objArray[111].toString()));
13241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.ceilingKey(objArray[1].toString()));
13242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.floorKey(objArray[1].toString()));
13243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.lowerKey(objArray[1].toString()));
13244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.higherKey(objArray[1].toString()));
13245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = map.descendingMap();
13246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.ceilingKey(objArray[100].toString()));
13247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.floorKey(objArray[100].toString()));
13248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.lowerKey(objArray[100].toString()));
13249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.higherKey(objArray[100].toString()));
13250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.ceilingKey(objArray[111].toString()));
13251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.floorKey(objArray[111].toString()));
13252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.lowerKey(objArray[111].toString()));
13253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.higherKey(objArray[111].toString()));
13254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.ceilingKey(objArray[1].toString()));
13255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.floorKey(objArray[1].toString()));
13256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.lowerKey(objArray[1].toString()));
13257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(map.higherKey(objArray[1].toString()));
13258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_lower_tail() throws Exception {
13261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap map = tm.subMap(objArray[102].toString(), true,
13262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[103].toString(), false);
13263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.containsKey(objArray[102].toString()));
13264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[101].toString()));
13265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[103].toString()));
13266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[104].toString()));
13267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = map.descendingMap();
13268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.containsKey(objArray[102].toString()));
13269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[101].toString()));
13270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[103].toString()));
13271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[104].toString()));
13272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = tm.subMap(objArray[102].toString(), true, objArray[102]
13273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString(), false);
13274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[102].toString()));
13275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[101].toString()));
13276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[103].toString()));
13277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[104].toString()));
13278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = map.descendingMap();
13279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[102].toString()));
13280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[101].toString()));
13281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[103].toString()));
13282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[104].toString()));
13283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_contains_null() throws Exception {
13286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap map = tm.subMap(objArray[100].toString(), true,
13287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[100].toString(), false);
13288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[100].toString()));
13289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[10].toString()));
13290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[101].toString()));
13291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[102].toString()));
13292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[1].toString()));
13293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = map.descendingMap();
13294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[100].toString()));
13295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[10].toString()));
13296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[101].toString()));
13297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[102].toString()));
13298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[1].toString()));
13299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_contains() throws Exception {
13302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap map = tm.subMap(objArray[102].toString(), true,
13303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[103].toString(), false);
13304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[100].toString()));
13305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[104].toString()));
13306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[101].toString()));
13307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.containsKey(objArray[102].toString()));
13308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = map.descendingMap();
13309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[100].toString()));
13310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[104].toString()));
13311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.containsKey(objArray[101].toString()));
13312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.containsKey(objArray[102].toString()));
13313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_size() throws Exception {
13316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap map = tm.subMap(objArray[102].toString(), true,
13317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[103].toString(), false);
13318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, map.headMap(objArray[102].toString(), false).size());
13319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, map.headMap(objArray[102].toString(), true).size());
13320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(1, map.headMap(objArray[103].toString(), true).size());
13322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IAE");
13323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
13324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, map.headMap(objArray[103].toString(), false).size());
13326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, map.tailMap(objArray[102].toString(), true).size());
13327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, map.tailMap(objArray[102].toString(), false).size());
13328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.headMap(objArray[103].toString(), false).containsKey(
13329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[102].toString()));
13330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(map.headMap(objArray[103].toString(), true).containsKey(
13332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    objArray[102].toString()));
13333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IAE");
13334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
13335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.headMap(objArray[102].toString(), false).containsKey(
13337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[102].toString()));
13338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.headMap(objArray[102].toString(), true).containsKey(
13339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[102].toString()));
13340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.tailMap(objArray[102].toString(), true).containsKey(
13341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[102].toString()));
13342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.tailMap(objArray[102].toString(), true).containsKey(
13343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[103].toString()));
13344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, map.tailMap(objArray[101].toString()).size());
13346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IAE");
13347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
13348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = map.descendingMap();
13350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            map = map.subMap(objArray[103].toString(), true, objArray[102]
13352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .toString(), true);
13353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IAE");
13354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
13355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = map.subMap(objArray[102].toString(), true, objArray[102]
13357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString(), true);
13358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, map.headMap(objArray[102].toString(), true).size());
13359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, map.headMap(objArray[102].toString(), false).size());
13360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, map.headMap(objArray[103].toString(), true).size());
13362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IAE");
13363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
13364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, map.tailMap(objArray[102].toString(), true).size());
13367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(map.headMap(objArray[103].toString(), true)
13369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .containsKey(objArray[102].toString()));
13370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IAE");
13371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
13372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.headMap(objArray[102].toString(), true).containsKey(
13374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[102].toString()));
13375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.headMap(objArray[102].toString(), false).containsKey(
13376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[102].toString()));
13377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.tailMap(objArray[102].toString(), true).containsKey(
13378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[102].toString()));
13379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.tailMap(objArray[102].toString(), true).containsKey(
13380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[103].toString()));
13381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(0, map.tailMap(objArray[101].toString()).size());
13383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IAE");
13384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
13385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_lower() throws Exception {
13389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        NavigableMap map = tm.subMap(objArray[102].toString(), true,
13390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[103].toString(), false);
13391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.higherKey(objArray[101]
13392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.higherKey(objArray[102].toString()));
13394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.higherKey(objArray[103].toString()));
13395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.higherKey(objArray[104].toString()));
13396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[101]
13397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[102]
13399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.ceilingKey(objArray[103].toString()));
13401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.ceilingKey(objArray[104].toString()));
13402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.lowerKey(objArray[101].toString()));
13403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.lowerKey(objArray[102].toString()));
13404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.lowerKey(objArray[103]
13405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.lowerKey(objArray[104]
13407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.floorKey(objArray[101].toString()));
13409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.floorKey(objArray[102]
13410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.floorKey(objArray[103]
13412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.floorKey(objArray[104]
13414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = map.descendingMap();
13416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.higherKey(objArray[101].toString()));
13417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.higherKey(objArray[102].toString()));
13418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.higherKey(objArray[103]
13419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.higherKey(objArray[104]
13421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.ceilingKey(objArray[101].toString()));
13423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[102]
13424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[103]
13426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[104]
13428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.lowerKey(objArray[101]
13430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.lowerKey(objArray[102].toString()));
13432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.lowerKey(objArray[103].toString()));
13433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.lowerKey(objArray[104].toString()));
13434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.floorKey(objArray[101]
13435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(objArray[102].toString(), map.floorKey(objArray[102]
13437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString()));
13438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.floorKey(objArray[103].toString()));
13439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(null, map.floorKey(objArray[104].toString()));
13440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_lowerkey() throws Exception {
13443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tm.subMap(objArray[100].toString(), true, objArray[100].toString(),
13445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    false).descendingMap().firstKey();
13446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
13447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
13448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
13449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tm.subMap(objArray[100].toString(), true, objArray[100].toString(),
13452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    false).descendingMap().lastKey();
13453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
13454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
13455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
13456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tm.subMap(objArray[100].toString(), true, objArray[100].toString(),
13459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    false).firstKey();
13460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
13461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
13462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
13463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
13465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tm.subMap(objArray[100].toString(), true, objArray[100].toString(),
13466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    false).lastKey();
13467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NoSuchElementException");
13468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (Exception e) {
13469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
13470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
13471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_headMap() throws Exception {
13475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap tree = new TreeMap();
13476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tree.put(new Integer(0), null);
13477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tree.put(new Integer(1), null);
13478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Map submap = tree.subMap(tree.firstKey(), tree.lastKey());
13479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tree.remove(tree.lastKey());
13480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(submap, tree);
13481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testname() throws Exception {
13484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TreeMap nullTree = new TreeMap(new Comparator() {
13485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public int compare(Object o1, Object o2) {
13486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (o1 == null) {
13487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    return o2 == null ? 0 : -1;
13488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
13489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return ((String) o1).compareTo((String) o2);
13490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
13491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        });
13492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        nullTree.put(new String("One"), 1);
13493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        nullTree.put(new String("Two"), 2);
13494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        nullTree.put(new String("Three"), 3);
13495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        nullTree.put(new String("Four"), 4);
13496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        nullTree.put(null, 0);
13497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        nullTree.subMap(null, "two").size();
13498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
13499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
13501