public BingTile findParent()
    {
        return findParent(zoomLevel - 1);
    }
@Test
    public void testFindParent()
    {
        assertEquals(BingTile.fromQuadKey("0123").findParent().toQuadKey(), "012");
        assertEquals(BingTile.fromQuadKey("1").findParent().toQuadKey(), "");
        assertEquals(BingTile.fromQuadKey("0123").findParent(1).toQuadKey(), "0");
        assertEquals(BingTile.fromQuadKey("0123").findParent(4).toQuadKey(), "0123");

        assertThatThrownBy(() -> BingTile.fromQuadKey("0123").findParent(5))
                .hasMessage(format("newZoom must be less than or equal to current zoom %s: %s", 4, 5));

        assertThatThrownBy(() -> BingTile.fromQuadKey("").findParent())
                .hasMessage(format("newZoom must be greater than or equal to 0: %s", -1));

        assertThatThrownBy(() -> BingTile.fromQuadKey("12").findParent(-1))
                .hasMessage(format("newZoom must be greater than or equal to 0: %s", -1));
    }