// Path: westty-api/src/main/java/org/deephacks/westty/cluster/ClusterListener.java
// public interface ClusterListener<K, V> {
//     /**
//      * Invoked when an entry is added.
//      *
//      * @param event entry event
//      */
//     void entryAdded(EntryEvent<K, V> event);
// 
//     /**
//      * Invoked when an entry is removed.
//      *
//      * @param event entry event
//      */
//     void entryRemoved(EntryEvent<K, V> event);
// 
//     /**
//      * Invoked when an entry is updated.
//      *
//      * @param event entry event
//      */
//     void entryUpdated(EntryEvent<K, V> event);
// 
//     /**
//      * Invoked when an entry is evicted.
//      *
//      * @param event entry event
//      */
//     void entryEvicted(EntryEvent<K, V> event);
// 
// }
// 
// Path: westty-api/src/main/java/org/deephacks/westty/cluster/DistributedMultiMap.java
// public interface DistributedMultiMap<K, V> {
// 
//     boolean remove(Object key, Object value);
// 
//     boolean put(K key, V value);
// 
//     void addEntryListener(ClusterListener<K, V> listener, boolean includeValue);
// 
//     Set<Map.Entry<K, V>> entrySet();
// 
//     Collection<V> get(K key);
// }


import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.EntryListener;
import com.hazelcast.core.MultiMap;
import org.deephacks.westty.cluster.ClusterListener;
import org.deephacks.westty.cluster.DistributedMultiMap;
import java.util.Collection;
import java.util.Map.Entry;
import java.util.Set;
package org.deephacks.westty.internal.cluster;



class WesttyDistributedMultiMap<K, V> implements DistributedMultiMap<K, V> {
    private MultiMap<K, V> map;

    public WesttyDistributedMultiMap(MultiMap<K, V> map) {
        this.map = map;
    }

    @Override
    public boolean remove(Object key, Object value) {
        return map.remove(key, value);
    }

    @Override
    public boolean put(K key, V value) {
        return map.put(key, value);
    }

    @Override
// Path: westty-api/src/main/java/org/deephacks/westty/cluster/ClusterListener.java
// public interface ClusterListener<K, V> {
//     /**
//      * Invoked when an entry is added.
//      *
//      * @param event entry event
//      */
//     void entryAdded(EntryEvent<K, V> event);
// 
//     /**
//      * Invoked when an entry is removed.
//      *
//      * @param event entry event
//      */
//     void entryRemoved(EntryEvent<K, V> event);
// 
//     /**
//      * Invoked when an entry is updated.
//      *
//      * @param event entry event
//      */
//     void entryUpdated(EntryEvent<K, V> event);
// 
//     /**
//      * Invoked when an entry is evicted.
//      *
//      * @param event entry event
//      */
//     void entryEvicted(EntryEvent<K, V> event);
// 
// }
// 
// Path: westty-api/src/main/java/org/deephacks/westty/cluster/DistributedMultiMap.java
// public interface DistributedMultiMap<K, V> {
// 
//     boolean remove(Object key, Object value);
// 
//     boolean put(K key, V value);
// 
//     void addEntryListener(ClusterListener<K, V> listener, boolean includeValue);
// 
//     Set<Map.Entry<K, V>> entrySet();
// 
//     Collection<V> get(K key);
// }


// Path: westty-cluster/src/main/java/org/deephacks/westty/internal/cluster/WesttyDistributedMultiMap.java
import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.EntryListener;
import com.hazelcast.core.MultiMap;
import org.deephacks.westty.cluster.ClusterListener;
import org.deephacks.westty.cluster.DistributedMultiMap;
import java.util.Collection;
import java.util.Map.Entry;
import java.util.Set;

package org.deephacks.westty.internal.cluster;



class WesttyDistributedMultiMap<K, V> implements DistributedMultiMap<K, V> {
    private MultiMap<K, V> map;

    public WesttyDistributedMultiMap(MultiMap<K, V> map) {
        this.map = map;
    }

    @Override
    public boolean remove(Object key, Object value) {
        return map.remove(key, value);
    }

    @Override
    public boolean put(K key, V value) {
        return map.put(key, value);
    }

    @Override
    public void addEntryListener(final ClusterListener<K, V> listener, boolean includeValue) {