class JSONPathTypedMultiNamesPrefixName2
        extends JSONPathTypedMultiNames {
    final String prefixName0;
    final long prefixNameHash0;

    final String prefixName1;
    final long prefixNameHash1;

    JSONPathTypedMultiNamesPrefixName2(
            JSONPath[] paths,
            JSONPath prefix,
            JSONPath[] namePaths,
            Type[] types,
            String[] formats,
            long[] pathFeatures,
            ZoneId zoneId,
            long features) {
        super(paths, prefix, namePaths, types, formats, pathFeatures, zoneId, features);

        JSONPathTwoSegment prefixTwo = (JSONPathTwoSegment) prefix;
        prefixName0 = ((JSONPathSegmentName) prefixTwo.first).name;
        prefixNameHash0 = ((JSONPathSegmentName) prefixTwo.first).nameHashCode;

        prefixName1 = ((JSONPathSegmentName) prefixTwo.second).name;
        prefixNameHash1 = ((JSONPathSegmentName) prefixTwo.second).nameHashCode;
    }

    @Override
    public Object extract(JSONReader jsonReader) {<FILL_FUNCTION_BODY>}

    private static JSONException error(JSONReader jsonReader) {
        return new JSONException(jsonReader.info("illegal input, expect '[', but " + jsonReader.current()));
    }
}

        if (jsonReader.nextIfNull()) {
            return new Object[paths.length];
        }

        if (!jsonReader.nextIfObjectStart()) {
            throw error(jsonReader);
        }

        while (true) {
            if (jsonReader.nextIfObjectEnd()) {
                return new Object[paths.length];
            }

            if (jsonReader.isEnd()) {
                throw error(jsonReader);
            }

            boolean match = jsonReader.readFieldNameHashCode() == prefixNameHash0;
            if (!match) {
                jsonReader.skipValue();
                continue;
            }

            break;
        }

        if (jsonReader.nextIfNull()) {
            return new Object[paths.length];
        }

        if (!jsonReader.nextIfObjectStart()) {
            throw error(jsonReader);
        }

        while (true) {
            if (jsonReader.nextIfObjectEnd()) {
                return new Object[paths.length];
            }

            if (jsonReader.isEnd()) {
                throw error(jsonReader);
            }

            boolean match = jsonReader.readFieldNameHashCode() == prefixNameHash1;
            if (!match) {
                jsonReader.skipValue();
                continue;
            }

            break;
        }

        if (jsonReader.nextIfNull()) {
            return new Object[paths.length];
        }

        return objectReader.readObject(jsonReader);
    
<methods>public java.lang.Object eval(java.lang.Object) ,public java.lang.Object extract(com.alibaba.fastjson2.JSONReader) ,public boolean isRef() <variables>final non-sealed FieldReader#RAW[] fieldReaders,final non-sealed com.alibaba.fastjson2.JSONPath[] namePaths,final non-sealed java.lang.String[] names,final non-sealed ObjectReaderAdapter<java.lang.Object[]> objectReader,final non-sealed com.alibaba.fastjson2.JSONPath prefix