/** {@inheritDoc} */
 @Override
 public boolean equals(Object other) {
   if (!(other instanceof TLongLongMap)) {
     return false;
   }
   TLongLongMap that = (TLongLongMap) other;
   if (that.size() != this.size()) {
     return false;
   }
   long[] values = _values;
   byte[] states = _states;
   long this_no_entry_value = getNoEntryValue();
   long that_no_entry_value = that.getNoEntryValue();
   for (int i = values.length; i-- > 0; ) {
     if (states[i] == FULL) {
       long key = _set[i];
       long that_value = that.get(key);
       long this_value = values[i];
       if ((this_value != that_value)
           && (this_value != this_no_entry_value)
           && (that_value != that_no_entry_value)) {
         return false;
       }
     }
   }
   return true;
 }
 /** {@inheritDoc} */
 public void putAll(TLongLongMap map) {
   ensureCapacity(map.size());
   TLongLongIterator iter = map.iterator();
   while (iter.hasNext()) {
     iter.advance();
     this.put(iter.key(), iter.value());
   }
 }
 /**
  * Creates a new <code>TLongLongHashMap</code> instance containing all of the entries in the map
  * passed in.
  *
  * @param map a <tt>TLongLongMap</tt> that will be duplicated.
  */
 public TLongLongHashMap(TLongLongMap map) {
   super(map.size());
   if (map instanceof TLongLongHashMap) {
     TLongLongHashMap hashmap = (TLongLongHashMap) map;
     this._loadFactor = hashmap._loadFactor;
     this.no_entry_key = hashmap.no_entry_key;
     this.no_entry_value = hashmap.no_entry_value;
     //noinspection RedundantCast
     if (this.no_entry_key != (long) 0) {
       Arrays.fill(_set, this.no_entry_key);
     }
     //noinspection RedundantCast
     if (this.no_entry_value != (long) 0) {
       Arrays.fill(_values, this.no_entry_value);
     }
     setUp((int) Math.ceil(DEFAULT_CAPACITY / _loadFactor));
   }
   putAll(map);
 }