code: public static <V> IntMap<V> synchronizedIntMap (IntMap<V> m) {
          return new SynchronizedIntMap<V>(m);
      }
docs: Returns a synchronized (thread-safe) int map backed by the specified int map.  In order to
  guarantee serial access, it is critical that <strong>all</strong> access to the backing int
  map is accomplished through the returned int map.
  
  <p> It is imperative that the user manually synchronize on the returned int map when
  iterating over any of its collection views:
  
  <pre>
  IntMap m = Collections.synchronizedIntMap(new HashIntMap());
  ...
  Set s = m.keySet();  // Needn't be in synchronized block
  ...
  synchronized(m) {  // Synchronizing on m, not s!
  Iterator i = s.iterator(); // Must be in synchronized block
  while (i.hasNext())
  foo(i.next());
  }
  </pre>
  
  Failure to follow this advice may result in non-deterministic behavior.
  
  <p> The returned map will be serializable if the specified map is serializable.
  
  @param m the int map to be "wrapped" in a synchronized int map.
  
  @return a synchronized view of the specified int map.