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.
public int size() {
    return map.size();
  }
  @Override
  public UnmodifiableIterator<K> iterator() {
    return map.keyIterator();
  }
  @Override
  public Spliterator<K> spliterator() {
    return map.keySpliterator();
  }
  @Override
  public boolean contains(@Nullable Object object) {
    return map.containsKey(object);
  }
  @Override
  K get(int index) {
    return map.entrySet().asList().get(index).getKey();
  }
  @Override
  public void forEach(Consumer<? super K> action) {
    checkNotNull(action);
    map.forEach((k, v) -> action.accept(k));
  }
  @Override
  boolean isPartialView() {
    return true;
  }
}