private void runSoak()
    {
    	final int cap = 10*1000;
    	HashedSetInt set = new HashedSetInt(0, 5);
        // general put-get
        for (int v = 0; v != cap; v++) org.junit.Assert.assertTrue(set.add(v));
		org.junit.Assert.assertEquals(cap, set.size());
        for (int v = 0; v != cap; v++) org.junit.Assert.assertFalse(set.add(v));
		org.junit.Assert.assertEquals(cap, set.size());
		org.junit.Assert.assertFalse(set.remove(cap+1));
		org.junit.Assert.assertEquals(cap, set.size());
        for (int v = 0; v != cap; v++) org.junit.Assert.assertTrue(set.contains(v));
        // iterators
		java.util.HashSet<Integer> jset = new java.util.HashSet<Integer>();
		IteratorInt it = set.iterator();
		while (it.hasNext()) {
			jset.add(it.next());
			it.remove();
		}
		org.junit.Assert.assertEquals(0, set.size());
		org.junit.Assert.assertEquals(cap, jset.size());
        for (int v = 0; v != cap; v++) org.junit.Assert.assertTrue(jset.contains(v));
        org.junit.Assert.assertFalse(jset.contains(null));
        for (int v = 0; v != cap; v++) org.junit.Assert.assertFalse(set.contains(v));
        //restore and remove
        for (int v = 0; v != cap; v++) org.junit.Assert.assertTrue(set.add(v));
		org.junit.Assert.assertEquals(cap, set.size());
		org.junit.Assert.assertEquals(cap, jset.size());
        for (int v = 0; v != cap; v++) {
        	org.junit.Assert.assertTrue(set.contains(v));
        	org.junit.Assert.assertTrue(set.remove(v));
        	org.junit.Assert.assertFalse(set.contains(v));
        	org.junit.Assert.assertFalse(set.remove(v));
        	org.junit.Assert.assertFalse(set.contains(v));
        }
		org.junit.Assert.assertEquals(0, set.size());
		org.junit.Assert.assertEquals(cap, jset.size());
    }