@Test
@SuppressWarnings("unchecked")
public void setEquality() {

    Set<?> s1 = newSet(2, "a");
    Set<?> s2 = newSet("a", 2);
    Set<?> s3 = newSet(3, "a");
    Set<?> s4 = newSet(3);
    assertTrue(TypeUtils.equals((Set) null, (Set) null));
    assertFalse(TypeUtils.equals(s1, (Set) null));
    assertFalse(TypeUtils.equals((Set) null, s2));
    assertTrue(TypeUtils.equals(s1, s1));
    assertTrue(TypeUtils.equals(s1, s2));
    assertFalse(TypeUtils.equals(s1, s3));
    assertFalse(TypeUtils.equals(s1, s4));
    // force equals(Object, Object)
    assertTrue(TypeUtils.equals((Object) s1, (Object) s2));
    assertFalse(TypeUtils.equals((Object) s1, (Object) s3));
}