public Versions intersect(Versions other) {
        short newLowest = lowest > other.lowest ? lowest : other.lowest;
        short newHighest = highest < other.highest ? highest : other.highest;
        if (newLowest > newHighest) {
            return Versions.NONE;
        }
        return new Versions(newLowest, newHighest);
    }
@Test
    public void testIntersections() {
        assertEquals(newVersions(2, 3), newVersions(1, 3).intersect(
                newVersions(2, 4)));
        assertEquals(newVersions(3, 3), newVersions(0, Short.MAX_VALUE).intersect(
                newVersions(3, 3)));
        assertEquals(Versions.NONE, newVersions(9, Short.MAX_VALUE).intersect(
                newVersions(2, 8)));
        assertEquals(Versions.NONE, Versions.NONE.intersect(Versions.NONE));
    }