### Question:
PSIntMap implements Iterable<V> { public PSIntMap<V> set (int key, V value){ if (value == null){ return remove(key); } int newSm = key | 0x1f; if (newSm == stagingNodeMask){ int i = key & 0x1f; Node<V> n = stagingNode; int newSize = size; if ((n.getElementAtLevelIndex(i)) == null) { n = n.cloneWithAdded(i, value); newSize = size+1; } else { n = n.cloneWithReplaced(i, value); } return new PSIntMap<V>( newSize, rootLevel, rootNode, n, targetNode, newSm); } else { int newRootLevel = getStartLevel(key); if (newRootLevel > rootLevel){ return setInNewRootLevel( newRootLevel, key, value); } else { return setInCurrentRootLevel( key, value); } } } PSIntMap(); protected  PSIntMap(int size, int rootLevel, Node rootNode, Node<V> stagingNode, Node<V> targetNode, int stagingNodeMask); Iterator<V> iterator(); int size(); V get(int key); PSIntMap<V> remove(int key); PSIntMap<V> set(int key, V value); void process(Processor<V> p); PSIntMap<V> removeAllSatisfying( Predicate<V> pred); V[] values(); void printOn(PrintStream ps); String keyDescription(int key);  }### Answer:
@Test public void testMultiAdd(){ PSIntMap<Integer> m = createPersistentIntMap(); int[] data = { 0,1, 32, 4,10, 666,669, 36, 37 }; m = set( m, data); dump(m); assertEquals( m, data); }