class MapEntryArrayValues extends MapEntry<K, V[]> {

    @Override
    @SuppressWarnings("unchecked")
    public boolean equals(Object o) {
        if (o != null && o instanceof Map.Entry) {
            Map.Entry<K, V[]> entry = (Map.Entry<K, V[]>) o;
            if (this.getKey() == null ? entry.getKey() == null : this
                    .getKey().equals(entry.getKey())) {
                V[] values = getValue();
                V[] otherValues = entry.getValue();
                if (values != null) {
                    if (otherValues != null) {
                        if (values.length == otherValues.length) {
                            boolean same = true;
                            for (int i = 0; i < values.length && same; i++) {
                                same = values[i] == null ? otherValues[i] == null
                                        : values[i].equals(otherValues[i]);
                            }
                            return same;
                        }
                    } else {
                        return false;
                    }
                } else {
                    return otherValues == null;
                }
            }
        }
        return false;
    }

    public  MapEntryArrayValues(K key, V[] value, boolean modifiable);

}