### Question:
DefaultWildcardType implements WildcardType { @Override public boolean equals(Object object) { if (!(object instanceof WildcardType)) { return false; } WildcardType wildcardType = (WildcardType) object; return Arrays.equals(lowerBounds, wildcardType.getLowerBounds()) && Arrays.equals(upperBounds, wildcardType.getUpperBounds()); } DefaultWildcardType(Type[] upperBounds, Type[] lowerBounds); Type[] getUpperBounds(); Type[] getLowerBounds(); @Override int hashCode(); @Override boolean equals(Object object); @Override String toString(); static String toString(WildcardType type); static String toString(WildcardType type, ClassSerializer serializer);  }### Answer:
@Test public void equalsWithDifferentClass() { WildcardType wildcardType = new DefaultWildcardType(null, new Type[] {Integer.class}); assertFalse(wildcardType.equals(new Object())); }
@Test public void equalsWithDifferentBounds() { WildcardType wildcardType1 = new DefaultWildcardType(new Type[] {Number.class}, null); WildcardType wildcardType2 = new DefaultWildcardType(null, new Type[] {Integer.class}); assertFalse(wildcardType1.equals(wildcardType2)); }
@Test public void equalsWithDifferentUpperBounds() { WildcardType wildcardType1 = new DefaultWildcardType(new Type[] {Number.class}, null); WildcardType wildcardType2 = new DefaultWildcardType(new Type[] {Integer.class}, null); assertFalse(wildcardType1.equals(wildcardType2)); }
@Test public void equalsWithDifferentLowerBounds() { WildcardType wildcardType1 = new DefaultWildcardType(null, new Type[] {Number.class}); WildcardType wildcardType2 = new DefaultWildcardType(null, new Type[] {Integer.class}); assertFalse(wildcardType1.equals(wildcardType2)); }