### Question:
EquatableValueSet implements ValueSet { @Override public EquatableValueSet intersect(ValueSet other) { EquatableValueSet otherValueSet = checkCompatibility(other); if (inclusive && otherValueSet.inclusive()) { return new EquatableValueSet(type, true, intersect(entries, otherValueSet.entries)); } else if (inclusive) { return new EquatableValueSet(type, true, subtract(entries, otherValueSet.entries)); } else if (otherValueSet.inclusive()) { return new EquatableValueSet(type, true, subtract(otherValueSet.entries, entries)); } else { return new EquatableValueSet(type, false, union(otherValueSet.entries, entries)); } } @JsonCreator  EquatableValueSet(
            @JsonProperty("type") Type type,
            @JsonProperty("inclusive") boolean inclusive,
            @JsonProperty("entries") Set<ValueEntry> entries); @JsonProperty @Override Type getType(); @JsonProperty boolean inclusive(); @JsonProperty Set<ValueEntry> getEntries(); Collection<Object> getValues(); int getValuesCount(); @Override boolean isNone(); @Override boolean isAll(); @Override boolean isSingleValue(); @Override Object getSingleValue(); @Override boolean isDiscreteSet(); @Override List<Object> getDiscreteSet(); @Override boolean containsValue(Object value); @Override DiscreteValues getDiscreteValues(); @Override ValuesProcessor getValuesProcessor(); @Override EquatableValueSet intersect(ValueSet other); @Override boolean overlaps(ValueSet other); @Override EquatableValueSet union(ValueSet other); @Override EquatableValueSet complement(); @Override String toString(); @Override String toString(ConnectorSession session); @Override int hashCode(); @Override boolean equals(Object obj);  }### Answer:
@Test public void testIntersect() { assertEquals(EquatableValueSet.none(ID).intersect(EquatableValueSet.none(ID)), EquatableValueSet.none(ID)); assertEquals(EquatableValueSet.all(ID).intersect(EquatableValueSet.all(ID)), EquatableValueSet.all(ID)); assertEquals(EquatableValueSet.none(ID).intersect(EquatableValueSet.all(ID)), EquatableValueSet.none(ID)); assertEquals(EquatableValueSet.none(ID).intersect(EquatableValueSet.of(ID, 0L)), EquatableValueSet.none(ID)); assertEquals(EquatableValueSet.all(ID).intersect(EquatableValueSet.of(ID, 0L)), EquatableValueSet.of(ID, 0L)); assertEquals(EquatableValueSet.of(ID, 0L).intersect(EquatableValueSet.of(ID, 0L)), EquatableValueSet.of(ID, 0L)); assertEquals(EquatableValueSet.of(ID, 0L, 1L).intersect(EquatableValueSet.of(ID, 0L)), EquatableValueSet.of(ID, 0L)); assertEquals(EquatableValueSet.of(ID, 0L).complement().intersect(EquatableValueSet.of(ID, 0L)), EquatableValueSet.none(ID)); assertEquals(EquatableValueSet.of(ID, 0L).complement().intersect(EquatableValueSet.of(ID, 1L)), EquatableValueSet.of(ID, 1L)); assertEquals(EquatableValueSet.of(ID, 0L).intersect(EquatableValueSet.of(ID, 1L).complement()), EquatableValueSet.of(ID, 0L)); assertEquals(EquatableValueSet.of(ID, 0L, 1L).intersect(EquatableValueSet.of(ID, 0L, 2L)), EquatableValueSet.of(ID, 0L)); assertEquals(EquatableValueSet.of(ID, 0L, 1L).complement().intersect(EquatableValueSet.of(ID, 0L, 2L)), EquatableValueSet.of(ID, 2L)); assertEquals(EquatableValueSet.of(ID, 0L, 1L).complement().intersect(EquatableValueSet.of(ID, 0L, 2L).complement()), EquatableValueSet.of(ID, 0L, 1L, 2L).complement()); }