/**
   * Compares this map with another map for equality of their stored entries.
   *
   * @param other an <code>Object</code> value
   * @return true if the maps are identical
   */
  @Override // GemStoneAddition
  public boolean equals(Object other) {
    if (_map.equals(other)) {
      return true; // comparing two trove maps
    } else if (other instanceof Map) {
      Map that = (Map) other;
      if (that.size() != _map.size()) {
        return false; // different sizes, no need to compare
      } else { // now we have to do it the hard way
        Iterator it = that.entrySet().iterator();
        for (int i = that.size(); i-- > 0; ) {
          Map.Entry e = (Map.Entry) it.next();
          Object key = e.getKey();
          Object val = e.getValue();

          Object k = unwrapKey(key);
          float v = unwrapValue(val);
          if (_map.containsKey(k) && v == _map.get(k)) {
            // match, ok to continue
          } else {
            return false; // no match: we're done
          }
        }
        return true; // all entries match
      }
    } else {
      return false;
    }
  }
 /**
  * Retrieves the value for <tt>key</tt>
  *
  * @param key an <code>Object</code> value
  * @return the value of <tt>key</tt> or null if no such mapping exists.
  */
 @Override // GemStoneAddition
 public Object get(Object key) {
   Object k = unwrapKey(key);
   float v = _map.get(k);
   // 0 may be a false positive since primitive maps
   // cannot return null, so we have to do an extra
   // check here.
   if (v == 0) {
     return _map.containsKey(k) ? wrapValue(v) : null;
   } else {
     return wrapValue(v);
   }
 }
 /**
  * Clones the underlying trove collection and returns the clone wrapped in a new decorator
  * instance. This is a shallow clone except where primitives are concerned.
  *
  * @return a copy of the receiver
  */
 @Override // GemStoneAddition
 public Object clone() {
   try {
     TObjectFloatHashMapDecorator copy = (TObjectFloatHashMapDecorator) super.clone();
     copy._map = (TObjectFloatHashMap) _map.clone();
     return copy;
   } catch (CloneNotSupportedException e) {
     // assert(false);
     throw new InternalError(); // we are cloneable, so this does not happen
   }
 }
 /**
  * Inserts a key/value pair into the map.
  *
  * @param key an <code>Object</code> value
  * @param value an <code>Object</code> value
  * @return the previous value associated with <tt>key</tt>, or Integer(0) if none was found.
  */
 @Override // GemStoneAddition
 public Object put(Object key, Object value) {
   return wrapValue(_map.put(unwrapKey(key), unwrapValue(value)));
 }
 /**
  * Checks for the present of <tt>key</tt> in the keys of the map.
  *
  * @param key an <code>Object</code> value
  * @return a <code>boolean</code> value
  */
 @Override // GemStoneAddition
 public boolean containsKey(Object key) {
   return _map.containsKey(unwrapKey(key));
 }
 /**
  * Checks for the presence of <tt>val</tt> in the values of the map.
  *
  * @param val an <code>Object</code> value
  * @return a <code>boolean</code> value
  */
 @Override // GemStoneAddition
 public boolean containsValue(Object val) {
   return _map.containsValue(unwrapValue(val));
 }
 /**
  * Deletes a key/value pair from the map.
  *
  * @param key an <code>Object</code> value
  * @return the removed value, or Integer(0) if it was not found in the map
  */
 @Override // GemStoneAddition
 public Object remove(Object key) {
   return wrapValue(_map.remove(unwrapKey(key)));
 }