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() {
      fromMultimap.clear();
    }
    @Override
    public boolean containsKey(Object key) {
      return fromMultimap.containsKey(key);
    }
    @Override
    Collection<Entry<K, V2>> createEntries() {
      return new Entries();
    }
    @Override
    Iterator<Entry<K, V2>> entryIterator() {
      return Iterators.transform(
          fromMultimap.entries().iterator(), Maps.<K, V1, V2>asEntryToEntryFunction(transformer));
    }
    @Override
    public Collection<V2> get(final K key) {
      return transform(key, fromMultimap.get(key));
    }
    @Override
    public boolean isEmpty() {
      return fromMultimap.isEmpty();
    }
    @Override
    Set<K> createKeySet() {
      return fromMultimap.keySet();
    }
    @Override