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

    List<?> l1 = newList(2, "a");
    List<?> l2 = newList(2, "a");
    List<?> l3 = newList(3, "a");
    List<?> l4 = newList(3);
    assertTrue(TypeUtils.equals((List) null, (List) null));
    assertFalse(TypeUtils.equals(l1, (List) null));
    assertFalse(TypeUtils.equals((List) null, l2));
    assertTrue(TypeUtils.equals(l1, l1));
    assertTrue(TypeUtils.equals(l1, l2));
    assertFalse(TypeUtils.equals(l1, l3));
    assertFalse(TypeUtils.equals(l1, l4));
    // force equals(Object, Object)
    assertTrue(TypeUtils.equals((Object) l1, (Object) l2));
    assertFalse(TypeUtils.equals((Object) l1, (Object) l3));
}