public ConcurrentNavigableMap<String, Object> toTreeMap(final String json) {
        return GSON_MAP.fromJson(json, new TypeToken<ConcurrentSkipListMap<String, Object>>() {
        }.getType());
    }
@Test
    public void testToTreeMap() {
        Map<String, Object> map = ImmutableMap.of("id", 123L, "name", "test", "double",
                1.0D, "boolean", true, "data", generateTestObject());

        String json = "{\"name\":\"test\",\"id\":123,\"double\":1.0,\"boolean\":true,\"data\":"
                + EXPECTED_JSON + "}";

        Map<String, Object> parseMap = GsonUtils.getInstance().toTreeMap(json);

        map.forEach((key, value) -> {
            assertTrue(parseMap.containsKey(key));
            Object jsonValue = parseMap.get(key);
            if (jsonValue instanceof JsonElement) {
                assertEquals(value, GsonUtils.getInstance().fromJson((JsonElement) jsonValue, TestObject.class));
            } else {
                assertEquals(value, parseMap.get(key));
            }
        });

        assertNull(GsonUtils.getInstance().toObjectMap(null));
    }