static Object parse(byte[] bytes, JSONReader.Feature... features) {
        if (bytes == null || bytes.length == 0) {
            return null;
        }

        ObjectReaderProvider provider = JSONFactory.getDefaultObjectReaderProvider();
        final JSONReader.Context context = new JSONReader.Context(provider, features);
        ObjectReader<?> objectReader = provider.getObjectReader(Object.class, false);

        try (JSONReader reader = JSONReader.of(bytes, context)) {
            Object object = objectReader.readObject(reader, null, null, 0);
            if (reader.ch != EOI && (context.features & IgnoreCheckClose.mask) == 0) {
                throw new JSONException(reader.info("input not end"));
            }
            return object;
        }
    }
Parses the json byte array as a {@link JSONArray} or {@link JSONObject}.
Returns {@code null} if received byte array is {@code null} or empty.

@param bytes the specified UTF8 text to be parsed
@param features the specified features is applied to parsing
@return either {@link JSONArray} or {@link JSONObject} or null
@throws JSONException If a parsing error occurs
core/src/main/java/com/alibaba/fastjson2/JSON.java