private <T> void genMethodReadJSONBObjectArrayMapping(ObjectReadContext context, long readerFeatures) {
        FieldReader[] fieldReaderArray = context.fieldReaders;
        String classNameType = context.classNameType;
        boolean fieldBased = (readerFeatures & JSONReader.Feature.FieldBased.mask) != 0;

        MethodWriter mw = context.cw.visitMethod(Opcodes.ACC_PUBLIC,
                "readArrayMappingJSONBObject",
                METHOD_DESC_READ_OBJECT,
                512
        );

        MethodWriterContext mwc = new MethodWriterContext(mw, 6, true);
        mw.aload(JSON_READER);
        mw.lload(FEATURES);
        mw.invokevirtual(TYPE_JSON_READER, "features", "(J)J");
        mw.lstore(FEATURES);

        final int OBJECT = mwc.var("object");
        final int ENTRY_CNT = mwc.var("entryCnt");

        if (!context.disableAutoType()) {
            genCheckAutoType(classNameType, mwc);
        }

        {
            Label notNull_ = new Label();
            mw.aload(JSON_READER);
            mw.invokevirtual(TYPE_JSON_READER, "nextIfNull", "()Z");
            mw.ifeq(notNull_);
            mw.aconst_null();
            mw.areturn();
            mw.visitLabel(notNull_);
        }

        genCreateObject(mw, context, classNameType);
        mw.astore(OBJECT);

        Label fieldEnd_ = new Label(), entryCountMatch_ = new Label();

        mw.aload(JSON_READER);
        mw.invokevirtual(TYPE_JSON_READER, "startArray", "()I");
        mw.dup();
        mw.istore(ENTRY_CNT);
        mw.visitLdcInsn(fieldReaderArray.length);
        mw.if_icmpne(entryCountMatch_);

        for (int i = 0; i < fieldReaderArray.length; ++i) {
            FieldReader fieldReader = fieldReaderArray[i];
            genReadFieldValue(
                    context,
                    fieldReader,
                    fieldBased,
                    mwc,
                    OBJECT,
                    i,
                    true // arrayMapping
            );
        }
        mw.goto_(fieldEnd_);

        mw.visitLabel(entryCountMatch_);
        mw.aload(THIS);
        mw.aload(JSON_READER);
        mw.aload(OBJECT);
        mw.iload(ENTRY_CNT);
        mw.invokevirtual(TYPE_OBJECT_READER_ADAPTER, "readArrayMappingJSONBObject0", METHOD_DESC_READ_ARRAY_MAPPING_JSONB_OBJECT0);
        mw.visitLabel(fieldEnd_);

        mw.aload(OBJECT);
        mw.areturn();

        mw.visitMaxs(5, 10);
    }
<blockquote><pre>
     class Bean {
         private String field1;
         private int field2;
     }

     public void readJSONBObject(JSONReader jsonReader, Type fieldType, Object fieldName, long features) {
         features = jsonReader.features(features);
         if (nextIfNull()) {
             return null;
         }

         jsonReader.errorOnNoneSerializable(this.objectClass);

         if (jsonReader.isArray() && jsonReader.isSupportBeanArray()) {
             return readArrayMappingObject(jsonReader, fieldType, fieldName, features);
         }

         Bean object = new Bean();

         jsonReader.nextIfObjectStart();

         for (;;) {
             if (jsonReader.nextIfObjectEnd()) {
                 break;
             }
             switch(jsonReader.getRawInt()) {
                 case field1NameHash32:
                     if(jsonReader.nextIfName4Match2()) {
                         object.field1 = jsonReader.readString();
                         break;
                     }
                     goto hashCode64Start;
                 case field2NameHash32:
                     if(jsonReader.nextIfName4Match2()) {
                         object.field2 = jsonReader.readInt();
                         break;
                     }
                     goto hashCode64Start;
                 default:
                     goto hashCode64Start;
             }

             hashCode64Start:
             long hashCode64 = readFieldNameHashCode();

             if (this.typeKeyHashCode == hashCode64) {
                 object = this.autoType(jsonReader);
             }

             switch(jsonReader.getFieldOrdinal(hashCode64)) {
                 case 0:
                     object.field1 = jsonReader.readString();
             }
         }


     }
 </pre></blockquote>
core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderCreatorASM.java