// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/Function.java
// public interface Function<P, R> {
//     R invoke(P parameter);
// }
// 
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/Map.java
// @SuppressWarnings("NullableProblems")
// public interface Map<K, V> extends Iterable<Pair<K, V>> {
//     /**
//      * Returns a map with the value specified associated to the key specified.
//      * <p>If value already exists for the key, it will be replaced.
//      */
//     @NotNull
//     Map<K, V> put(@NotNull K key, V value);
// 
//     /**
//      * Returns the value associated with the key or {@code null} if the no value exists with the key specified.
//      */
//     @Nullable
//     V get(@NotNull K key);
// 
//     /**
//      * Returns a map with the value associated with the key removed if it exists.
//      */
//     @NotNull
//     Map<K, V> remove(@NotNull K key);
// 
//     /**
//      * Returns the keys for this map.
//      */
//     @NotNull
//     Iterable<K> keys();
// 
//     /**
//      * Returns the values for this map.
//      */
//     @NotNull
//     Iterable<V> values();
// 
//     /**
//      * Returns true if this map contains the specified key.
//      */
//     boolean containsKey(@NotNull K key);
// 
//     /**
//      * Returns an immutable view of this map as an instance of {@link java.util.Map}.
//      */
//     @NotNull
//     java.util.Map<K, V> asMap();
// }
// 
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/Pair.java
// public class Pair<C1, C2> {
//     private final C1 component1;
//     private final C2 component2;
// 
//     public Pair(C1 component1, C2 component2) {
//         this.component1 = component1;
//         this.component2 = component2;
//     }
// 
//     public C1 component1() {
//         return component1;
//     }
// 
//     public C2 component2() {
//         return component2;
//     }
// 
//     @Override
//     public String toString() {
//         return "(" + component1 + ", " + component2 + ")";
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Pair pair = (Pair) o;
//         return !(component1 != null ? !component1.equals(pair.component1) : pair.component1 != null)
//                 && !(component2 != null ? !component2.equals(pair.component2) : pair.component2 != null);
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = component1 != null ? component1.hashCode() : 0;
//         result = 31 * result + (component2 != null ? component2.hashCode() : 0);
//         return result;
//     }
// }
// 
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/internal/base/MappedIterable.java
// public class MappedIterable<T, F> extends AbstractIterable<T> {
//     private final Function<F, T> mapFunction;
//     private final com.github.andrewoma.dexx.collection.Iterable<F> from;
// 
//     public MappedIterable(Iterable<F> from, Function<F, T> mapFunction) {
//         this.mapFunction = mapFunction;
//         this.from = from;
//     }
// 
//     @NotNull
//     @Override
//     public Iterator<T> iterator() {
//         final Iterator<F> iterator = from.iterator();
//         return new Iterator<T>() {
//             @Override
//             public boolean hasNext() {
//                 return iterator.hasNext();
//             }
// 
//             @Override
//             public T next() {
//                 return mapFunction.invoke(iterator.next());
//             }
// 
//             @Override
//             public void remove() {
//                 iterator.remove();
//             }
//         };
//     }
// }


import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import com.github.andrewoma.dexx.collection.Function;
import com.github.andrewoma.dexx.collection.Map;
import com.github.andrewoma.dexx.collection.Pair;
import com.github.andrewoma.dexx.collection.internal.base.MappedIterable;
import org.jetbrains.annotations.NotNull;
import java.util.AbstractCollection;
import java.util.AbstractSet;

    @Override
    @SuppressWarnings("unchecked")
    public boolean containsValue(Object value) {
        return Adapters.contains(map.values(), value);
    }

    @Override
    @SuppressWarnings("unchecked")
    public V get(Object key) {
        try {
            return map.get((K) key);
        } catch (ClassCastException e) {
            return null;
        } catch (NullPointerException e) {
            return null;
        }
    }

    @Override
    public V put(K key, V value) {
        throw new UnsupportedOperationException();
    }

    @Override
    public V remove(Object key) {
        throw new UnsupportedOperationException();
    }

    @Override
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/Function.java
// public interface Function<P, R> {
//     R invoke(P parameter);
// }
// 
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/Map.java
// @SuppressWarnings("NullableProblems")
// public interface Map<K, V> extends Iterable<Pair<K, V>> {
//     /**
//      * Returns a map with the value specified associated to the key specified.
//      * <p>If value already exists for the key, it will be replaced.
//      */
//     @NotNull
//     Map<K, V> put(@NotNull K key, V value);
// 
//     /**
//      * Returns the value associated with the key or {@code null} if the no value exists with the key specified.
//      */
//     @Nullable
//     V get(@NotNull K key);
// 
//     /**
//      * Returns a map with the value associated with the key removed if it exists.
//      */
//     @NotNull
//     Map<K, V> remove(@NotNull K key);
// 
//     /**
//      * Returns the keys for this map.
//      */
//     @NotNull
//     Iterable<K> keys();
// 
//     /**
//      * Returns the values for this map.
//      */
//     @NotNull
//     Iterable<V> values();
// 
//     /**
//      * Returns true if this map contains the specified key.
//      */
//     boolean containsKey(@NotNull K key);
// 
//     /**
//      * Returns an immutable view of this map as an instance of {@link java.util.Map}.
//      */
//     @NotNull
//     java.util.Map<K, V> asMap();
// }
// 
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/Pair.java
// public class Pair<C1, C2> {
//     private final C1 component1;
//     private final C2 component2;
// 
//     public Pair(C1 component1, C2 component2) {
//         this.component1 = component1;
//         this.component2 = component2;
//     }
// 
//     public C1 component1() {
//         return component1;
//     }
// 
//     public C2 component2() {
//         return component2;
//     }
// 
//     @Override
//     public String toString() {
//         return "(" + component1 + ", " + component2 + ")";
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Pair pair = (Pair) o;
//         return !(component1 != null ? !component1.equals(pair.component1) : pair.component1 != null)
//                 && !(component2 != null ? !component2.equals(pair.component2) : pair.component2 != null);
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = component1 != null ? component1.hashCode() : 0;
//         result = 31 * result + (component2 != null ? component2.hashCode() : 0);
//         return result;
//     }
// }
// 
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/internal/base/MappedIterable.java
// public class MappedIterable<T, F> extends AbstractIterable<T> {
//     private final Function<F, T> mapFunction;
//     private final com.github.andrewoma.dexx.collection.Iterable<F> from;
// 
//     public MappedIterable(Iterable<F> from, Function<F, T> mapFunction) {
//         this.mapFunction = mapFunction;
//         this.from = from;
//     }
// 
//     @NotNull
//     @Override
//     public Iterator<T> iterator() {
//         final Iterator<F> iterator = from.iterator();
//         return new Iterator<T>() {
//             @Override
//             public boolean hasNext() {
//                 return iterator.hasNext();
//             }
// 
//             @Override
//             public T next() {
//                 return mapFunction.invoke(iterator.next());
//             }
// 
//             @Override
//             public void remove() {
//                 iterator.remove();
//             }
//         };
//     }
// }


// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/internal/adapter/MapAdapter.java
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import com.github.andrewoma.dexx.collection.Function;
import com.github.andrewoma.dexx.collection.Map;
import com.github.andrewoma.dexx.collection.Pair;
import com.github.andrewoma.dexx.collection.internal.base.MappedIterable;
import org.jetbrains.annotations.NotNull;
import java.util.AbstractCollection;
import java.util.AbstractSet;


    @Override
    @SuppressWarnings("unchecked")
    public boolean containsValue(Object value) {
        return Adapters.contains(map.values(), value);
    }

    @Override
    @SuppressWarnings("unchecked")
    public V get(Object key) {
        try {
            return map.get((K) key);
        } catch (ClassCastException e) {
            return null;
        } catch (NullPointerException e) {
            return null;
        }
    }

    @Override
    public V put(K key, V value) {
        throw new UnsupportedOperationException();
    }

    @Override
    public V remove(Object key) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void putAll(@NotNull java.util.Map<? extends K, ? extends V> m) {