// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/Set.java
// public interface Set<E> extends Iterable<E> {
//     /**
//      * Returns a set that adds the specified value if it doesn't already exist in this set.
//      */
//     @NotNull
//     Set<E> add(E value);
// 
//     /**
//      * Removes the specified value from the set if it exists.
//      */
//     @NotNull
//     Set<E> remove(E value);
// 
//     /**
//      * Returns true if the value exists in this set.
//      */
//     boolean contains(E value);
// 
//     /**
//      * Returns an immutable view of this set as an instance of {@code java.util.Set}.
//      */
//     @NotNull
//     java.util.Set<E> asSet();
// }
// 
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/internal/adapter/SetAdapater.java
// public class SetAdapater<E> extends java.util.AbstractSet<E> {
//     private Set<E> set;
// 
//     public SetAdapater(Set<E> set) {
//         this.set = set;
//     }
// 
//     @Override
//     public int size() {
//         return set.size();
//     }
// 
//     @Override
//     public boolean isEmpty() {
//         return set.isEmpty();
//     }
// 
//     @Override
//     public boolean contains(Object o) {
//         return Adapters.contains(set, o);
//     }
// 
//     @NotNull
//     @Override
//     public Iterator<E> iterator() {
//         return set.iterator();
//     }
// 
//     @NotNull
//     @Override
//     public Object[] toArray() {
//         return set.toArray();
//     }
// 
//     @NotNull
//     @Override
//     public <T> T[] toArray(@NotNull T[] a) {
//         return Adapters.toArray(set, a);
//     }
// 
//     @Override
//     public boolean add(E e) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public boolean remove(Object o) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public boolean containsAll(@NotNull Collection<?> c) {
//         return Adapters.containsAll(set, c);
//     }
// 
//     @Override
//     public boolean addAll(@NotNull Collection<? extends E> c) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public boolean retainAll(@NotNull Collection<?> c) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public boolean removeAll(@NotNull Collection<?> c) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public void clear() {
//         throw new UnsupportedOperationException();
//     }
// }


import com.github.andrewoma.dexx.collection.Set;
import com.github.andrewoma.dexx.collection.internal.adapter.SetAdapater;
import org.jetbrains.annotations.NotNull;
            return false;

        for (E a : this) {
            try {
                if (!other.contains(a)) {
                    return false;
                }
            } catch (NullPointerException e) {
                return false;
            } catch (ClassCastException e) {
                return false;
            }
        }

        return true;
    }

    @Override
    public int hashCode() {
        int hashCode = 0;
        for (E e : this) {
            hashCode = 31 * hashCode + (e == null ? 0 : e.hashCode());
        }

        return hashCode;
    }

    @Override
    @NotNull
    public java.util.Set<E> asSet() {
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/Set.java
// public interface Set<E> extends Iterable<E> {
//     /**
//      * Returns a set that adds the specified value if it doesn't already exist in this set.
//      */
//     @NotNull
//     Set<E> add(E value);
// 
//     /**
//      * Removes the specified value from the set if it exists.
//      */
//     @NotNull
//     Set<E> remove(E value);
// 
//     /**
//      * Returns true if the value exists in this set.
//      */
//     boolean contains(E value);
// 
//     /**
//      * Returns an immutable view of this set as an instance of {@code java.util.Set}.
//      */
//     @NotNull
//     java.util.Set<E> asSet();
// }
// 
// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/internal/adapter/SetAdapater.java
// public class SetAdapater<E> extends java.util.AbstractSet<E> {
//     private Set<E> set;
// 
//     public SetAdapater(Set<E> set) {
//         this.set = set;
//     }
// 
//     @Override
//     public int size() {
//         return set.size();
//     }
// 
//     @Override
//     public boolean isEmpty() {
//         return set.isEmpty();
//     }
// 
//     @Override
//     public boolean contains(Object o) {
//         return Adapters.contains(set, o);
//     }
// 
//     @NotNull
//     @Override
//     public Iterator<E> iterator() {
//         return set.iterator();
//     }
// 
//     @NotNull
//     @Override
//     public Object[] toArray() {
//         return set.toArray();
//     }
// 
//     @NotNull
//     @Override
//     public <T> T[] toArray(@NotNull T[] a) {
//         return Adapters.toArray(set, a);
//     }
// 
//     @Override
//     public boolean add(E e) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public boolean remove(Object o) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public boolean containsAll(@NotNull Collection<?> c) {
//         return Adapters.containsAll(set, c);
//     }
// 
//     @Override
//     public boolean addAll(@NotNull Collection<? extends E> c) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public boolean retainAll(@NotNull Collection<?> c) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public boolean removeAll(@NotNull Collection<?> c) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public void clear() {
//         throw new UnsupportedOperationException();
//     }
// }


// Path: collection/src/main/java/com/github/andrewoma/dexx/collection/internal/base/AbstractSet.java
import com.github.andrewoma.dexx.collection.Set;
import com.github.andrewoma.dexx.collection.internal.adapter.SetAdapater;
import org.jetbrains.annotations.NotNull;

            return false;

        for (E a : this) {
            try {
                if (!other.contains(a)) {
                    return false;
                }
            } catch (NullPointerException e) {
                return false;
            } catch (ClassCastException e) {
                return false;
            }
        }

        return true;
    }

    @Override
    public int hashCode() {
        int hashCode = 0;
        for (E e : this) {
            hashCode = 31 * hashCode + (e == null ? 0 : e.hashCode());
        }

        return hashCode;
    }

    @Override
    @NotNull
    public java.util.Set<E> asSet() {
        return new SetAdapater<E>(this);