code: public int range() {
  	// the current range isn't accurate, loop through the values and count
  	if (recalculateRange) {
  	    recalculateRange = false;
  	    range = 0;
  	    for (V v : values()) 
  		range++;
  	}
  	return range;
      }
docs: {@inheritDoc} This method runs in constant time, except for the first
  time called on a sub-map, when it runs in linear time to the number of
  values.