@Override
	public boolean equals(Object object) {
		if (object == this) {
			return true;
		}
		if (!(object instanceof HugeIntLongArrayMap)) {
			return false;
		}
		
		HugeIntLongArrayMap other = (HugeIntLongArrayMap) object;
		
		if (size() != other.size()) {
			return false;
		}
		
		IntIterator keySet = keySet();
		while (keySet.hasNext()) {
			int key = keySet.next();
			long[] value = get(key);
			
			if (value == null) {
				if (!(other.containsKey(key) && other.get(key) == null)) {
					return false;
				}
			} else {
				long[] otherValue = other.get(key);
				if (!Arrays.equals(value, otherValue)) {
					return false;
				}
			}
		}
		
		return true;
	}