Longs are now evaluated at face-value per #142

In Java, primitives support implicit widening, whereby an `int` is widened to a `long` during comparison. Such rules do not exist for object types, thus I have added explicit support for widening.