@Override public boolean equals(Object other) { return equal(this, other); }
public static <T extends Equatable> boolean equal(T reference, Object other) { checkNotNull(reference); if (reference == other) { return true; } else if (notEqual(reference, other)) { return false; } else { return equal(reference, (Equatable) other); } }