Doubles.constrainToRange(double,double,double) and Floats.constrainToRange(float,float,float) both cause unnecessary boxing of their arguments. Both call Preconditions.checkArgument(boolean, String, **Object**, **Object**) which causes the boxing.

Can be easily fixed by introducing an overloaded version of checkArgument for floats and doubles. For ints and longs these versions already exist:
Preconditions.checkArgument(boolean, String, **int**, **int**)
Preconditions.checkArgument(boolean, String, **long**, **long**)
which is also why constrainToRange does not have the same problem in the Ints, Shorts & Longs packages.
}
    @Override
    public void clear() {
      map.clear();
    }
    @Override
    Set<K> createKeySet() {
      return map.keySet();
    }
    @Override
    Collection<V> createValues() {
      return map.values();
    }
    @Override
    public Set<Entry<K, V>> entries() {
      return map.entrySet();
    }
    @Override
    Collection<Entry<K, V>> createEntries() {
      throw new AssertionError("unreachable");
    }
    @Override
    Multiset<K> createKeys() {
      return new Multimaps.Keys<K, V>(this);
    }
    @Override
    Iterator<Entry<K, V>> entryIterator() {
      return map.entrySet().iterator();
    }
    @Override