public static Serializable decode(final ByteBuf byteBuf) {
        int valueType = byteBuf.readUnsignedByte() & 0xff;
        StringBuilder result = new StringBuilder();
        decodeValue(valueType, 1, byteBuf, result);
        return result.toString();
    }
@Test
    void assertDecodeSmallJsonObjectWithString() {
        List<JsonEntry> jsonEntries = new LinkedList<>();
        String value1 = "";
        String value2 = Strings.repeat("1", (int) (Math.pow(2D, 7D) - 1D));
        String value3 = Strings.repeat("1", (int) (Math.pow(2D, 7D) - 1D + 1D));
        String value4 = Strings.repeat("1", (int) (Math.pow(2D, 14D) - 1D));
        jsonEntries.add(new JsonEntry(JsonValueTypes.STRING, "key1", value1));
        jsonEntries.add(new JsonEntry(JsonValueTypes.STRING, "key2", value2));
        jsonEntries.add(new JsonEntry(JsonValueTypes.STRING, "key3", value3));
        jsonEntries.add(new JsonEntry(JsonValueTypes.STRING, "key4", value4));
        ByteBuf payload = mockJsonObjectByteBuf(jsonEntries, true);
        String actual = (String) MySQLJsonValueDecoder.decode(payload);
        assertThat(actual, is(String.format("{\"key1\":\"%s\",\"key2\":\"%s\",\"key3\":\"%s\",\"key4\":\"%s\"}", value1, value2, value3, value4)));
    }