private static <V> void parseFeatures(
            JsonParser parser, ValueParser<V> valueParser, FeatureHandler<V> featureHandler) throws IOException {
        skipToken(parser, JsonToken.START_ARRAY);
        while (parser.nextToken() != JsonToken.END_ARRAY) {
            parseFeature(parser, valueParser, featureHandler);
        }
    }
Parses predicate query from JSON.
@param json JSON input.
@param featureHandler The handler is invoked when a feature is parsed.
@param rangeFeatureHandler The handler is invoked when a range feature is parsed.
@throws IllegalArgumentException If JSON is invalid.
predicate-search-core/src/main/java/com/yahoo/search/predicate/PredicateQueryParser.java