package com.alibaba.fastjson.parser.deserializer;

import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.fastjson.parser.JSONLexer;
import com.alibaba.fastjson.parser.JSONLexerBase;
import com.alibaba.fastjson.parser.ParseContext;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.util.FieldInfo;
import com.alibaba.fastjson.util.JavaBeanInfo;
import com.alibaba.fastjson.util.TypeUtils;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Proxy;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import kotlinx.serialization.json.internal.AbstractJsonLexerKt;

/* JADX INFO: loaded from: classes.dex */
public class JavaBeanDeserializer implements ObjectDeserializer {
    private final Map<String, FieldDeserializer> alterNameFieldDeserializers;
    public final JavaBeanInfo beanInfo;
    protected final Class<?> clazz;
    private ConcurrentMap<String, Object> extraFieldDeserializers;
    private final FieldDeserializer[] fieldDeserializers;
    private transient long[] hashArray;
    private transient short[] hashArrayMapping;
    private transient long[] smartMatchHashArray;
    private transient short[] smartMatchHashArrayMapping;
    protected final FieldDeserializer[] sortedFieldDeserializers;

    @Override // com.alibaba.fastjson.parser.deserializer.ObjectDeserializer
    public int getFastMatchToken() {
        return 12;
    }

    public JavaBeanDeserializer(ParserConfig parserConfig, Class<?> cls) {
        this(parserConfig, cls, cls);
    }

    public JavaBeanDeserializer(ParserConfig parserConfig, Class<?> cls, Type type) {
        this(parserConfig, JavaBeanInfo.build(cls, type, parserConfig.propertyNamingStrategy, parserConfig.fieldBased, parserConfig.compatibleWithJavaBean));
    }

    public JavaBeanDeserializer(ParserConfig parserConfig, JavaBeanInfo javaBeanInfo) {
        this.clazz = javaBeanInfo.clazz;
        this.beanInfo = javaBeanInfo;
        this.sortedFieldDeserializers = new FieldDeserializer[javaBeanInfo.sortedFields.length];
        int length = javaBeanInfo.sortedFields.length;
        HashMap map = null;
        for (int i = 0; i < length; i++) {
            FieldInfo fieldInfo = javaBeanInfo.sortedFields[i];
            FieldDeserializer fieldDeserializerCreateFieldDeserializer = parserConfig.createFieldDeserializer(parserConfig, javaBeanInfo, fieldInfo);
            this.sortedFieldDeserializers[i] = fieldDeserializerCreateFieldDeserializer;
            for (String str : fieldInfo.alternateNames) {
                if (map == null) {
                    map = new HashMap();
                }
                map.put(str, fieldDeserializerCreateFieldDeserializer);
            }
        }
        this.alterNameFieldDeserializers = map;
        this.fieldDeserializers = new FieldDeserializer[javaBeanInfo.fields.length];
        int length2 = javaBeanInfo.fields.length;
        for (int i2 = 0; i2 < length2; i2++) {
            this.fieldDeserializers[i2] = getFieldDeserializer(javaBeanInfo.fields[i2].name);
        }
    }

    public FieldDeserializer getFieldDeserializer(String str) {
        return getFieldDeserializer(str, null);
    }

    public FieldDeserializer getFieldDeserializer(String str, int[] iArr) {
        if (str == null) {
            return null;
        }
        int length = this.sortedFieldDeserializers.length - 1;
        int i = 0;
        while (i <= length) {
            int i2 = (i + length) >>> 1;
            int iCompareTo = this.sortedFieldDeserializers[i2].fieldInfo.name.compareTo(str);
            if (iCompareTo < 0) {
                i = i2 + 1;
            } else {
                if (iCompareTo <= 0) {
                    if (isSetFlag(i2, iArr)) {
                        return null;
                    }
                    return this.sortedFieldDeserializers[i2];
                }
                length = i2 - 1;
            }
        }
        Map<String, FieldDeserializer> map = this.alterNameFieldDeserializers;
        if (map != null) {
            return map.get(str);
        }
        return null;
    }

    public FieldDeserializer getFieldDeserializer(long j) {
        int i = 0;
        if (this.hashArray == null) {
            long[] jArr = new long[this.sortedFieldDeserializers.length];
            int i2 = 0;
            while (true) {
                FieldDeserializer[] fieldDeserializerArr = this.sortedFieldDeserializers;
                if (i2 >= fieldDeserializerArr.length) {
                    break;
                }
                jArr[i2] = TypeUtils.fnv1a_64(fieldDeserializerArr[i2].fieldInfo.name);
                i2++;
            }
            Arrays.sort(jArr);
            this.hashArray = jArr;
        }
        int iBinarySearch = Arrays.binarySearch(this.hashArray, j);
        if (iBinarySearch < 0) {
            return null;
        }
        if (this.hashArrayMapping == null) {
            short[] sArr = new short[this.hashArray.length];
            Arrays.fill(sArr, (short) -1);
            while (true) {
                FieldDeserializer[] fieldDeserializerArr2 = this.sortedFieldDeserializers;
                if (i >= fieldDeserializerArr2.length) {
                    break;
                }
                int iBinarySearch2 = Arrays.binarySearch(this.hashArray, TypeUtils.fnv1a_64(fieldDeserializerArr2[i].fieldInfo.name));
                if (iBinarySearch2 >= 0) {
                    sArr[iBinarySearch2] = (short) i;
                }
                i++;
            }
            this.hashArrayMapping = sArr;
        }
        short s = this.hashArrayMapping[iBinarySearch];
        if (s != -1) {
            return this.sortedFieldDeserializers[s];
        }
        return null;
    }

    static boolean isSetFlag(int i, int[] iArr) {
        if (iArr == null) {
            return false;
        }
        int i2 = i / 32;
        int i3 = i % 32;
        if (i2 < iArr.length) {
            if (((1 << i3) & iArr[i2]) != 0) {
                return true;
            }
        }
        return false;
    }

    public Object createInstance(DefaultJSONParser defaultJSONParser, Type type) {
        Object objNewInstance;
        if ((type instanceof Class) && this.clazz.isInterface()) {
            return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class[]{(Class) type}, new JSONObject());
        }
        Object obj = null;
        if (this.beanInfo.defaultConstructor == null && this.beanInfo.factoryMethod == null) {
            return null;
        }
        if (this.beanInfo.factoryMethod != null && this.beanInfo.defaultConstructorParameterSize > 0) {
            return null;
        }
        try {
            Constructor<?> constructor = this.beanInfo.defaultConstructor;
            if (this.beanInfo.defaultConstructorParameterSize != 0) {
                ParseContext context = defaultJSONParser.getContext();
                if (context == null || context.object == null) {
                    throw new JSONException("can't create non-static inner class instance.");
                }
                if (type instanceof Class) {
                    String name = ((Class) type).getName();
                    String strSubstring = name.substring(0, name.lastIndexOf(36));
                    Object obj2 = context.object;
                    String name2 = obj2.getClass().getName();
                    if (!name2.equals(strSubstring)) {
                        ParseContext parseContext = context.parent;
                        if (parseContext != null && parseContext.object != null && (("java.util.ArrayList".equals(name2) || "java.util.List".equals(name2) || "java.util.Collection".equals(name2) || "java.util.Map".equals(name2) || "java.util.HashMap".equals(name2)) && parseContext.object.getClass().getName().equals(strSubstring))) {
                            obj = parseContext.object;
                        }
                        obj2 = obj;
                    }
                    if (obj2 == null) {
                        throw new JSONException("can't create non-static inner class instance.");
                    }
                    objNewInstance = constructor.newInstance(obj2);
                } else {
                    throw new JSONException("can't create non-static inner class instance.");
                }
            } else if (constructor != null) {
                objNewInstance = constructor.newInstance(new Object[0]);
            } else {
                objNewInstance = this.beanInfo.factoryMethod.invoke(null, new Object[0]);
            }
            if (defaultJSONParser != null && defaultJSONParser.lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {
                for (FieldInfo fieldInfo : this.beanInfo.fields) {
                    if (fieldInfo.fieldClass == String.class) {
                        try {
                            fieldInfo.set(objNewInstance, "");
                        } catch (Exception e) {
                            throw new JSONException("create instance error, class " + this.clazz.getName(), e);
                        }
                    }
                }
            }
            return objNewInstance;
        } catch (JSONException e2) {
            throw e2;
        } catch (Exception e3) {
            throw new JSONException("create instance error, class " + this.clazz.getName(), e3);
        }
    }

    @Override // com.alibaba.fastjson.parser.deserializer.ObjectDeserializer
    public <T> T deserialze(DefaultJSONParser defaultJSONParser, Type type, Object obj) {
        return (T) deserialze(defaultJSONParser, type, obj, 0);
    }

    public <T> T deserialze(DefaultJSONParser defaultJSONParser, Type type, Object obj, int i) {
        return (T) deserialze(defaultJSONParser, type, obj, null, i, null);
    }

    public <T> T deserialzeArrayMapping(DefaultJSONParser defaultJSONParser, Type type, Object obj, Object obj2) {
        Enum<?> enumScanEnum;
        JSONLexer jSONLexer = defaultJSONParser.lexer;
        if (jSONLexer.token() != 14) {
            throw new JSONException("error");
        }
        T t = (T) createInstance(defaultJSONParser, type);
        int length = this.sortedFieldDeserializers.length;
        int i = 0;
        while (true) {
            if (i >= length) {
                break;
            }
            char c = i == length + (-1) ? ']' : AbstractJsonLexerKt.COMMA;
            FieldDeserializer fieldDeserializer = this.sortedFieldDeserializers[i];
            Class<?> cls = fieldDeserializer.fieldInfo.fieldClass;
            if (cls == Integer.TYPE) {
                fieldDeserializer.setValue((Object) t, jSONLexer.scanInt(c));
            } else if (cls == String.class) {
                fieldDeserializer.setValue((Object) t, jSONLexer.scanString(c));
            } else if (cls == Long.TYPE) {
                fieldDeserializer.setValue(t, jSONLexer.scanLong(c));
            } else if (cls.isEnum()) {
                char current = jSONLexer.getCurrent();
                if (current == '\"' || current == 'n') {
                    enumScanEnum = jSONLexer.scanEnum(cls, defaultJSONParser.getSymbolTable(), c);
                } else if (current >= '0' && current <= '9') {
                    enumScanEnum = ((EnumDeserializer) ((DefaultFieldDeserializer) fieldDeserializer).getFieldValueDeserilizer(defaultJSONParser.getConfig())).valueOf(jSONLexer.scanInt(c));
                } else {
                    enumScanEnum = scanEnum(jSONLexer, c);
                }
                fieldDeserializer.setValue(t, enumScanEnum);
            } else if (cls == Boolean.TYPE) {
                fieldDeserializer.setValue(t, jSONLexer.scanBoolean(c));
            } else if (cls == Float.TYPE) {
                fieldDeserializer.setValue(t, Float.valueOf(jSONLexer.scanFloat(c)));
            } else if (cls == Double.TYPE) {
                fieldDeserializer.setValue(t, Double.valueOf(jSONLexer.scanDouble(c)));
            } else if (cls == Date.class && jSONLexer.getCurrent() == '1') {
                fieldDeserializer.setValue(t, new Date(jSONLexer.scanLong(c)));
            } else if (cls == BigDecimal.class) {
                fieldDeserializer.setValue(t, jSONLexer.scanDecimal(c));
            } else {
                jSONLexer.nextToken(14);
                fieldDeserializer.setValue(t, defaultJSONParser.parseObject(fieldDeserializer.fieldInfo.fieldType, fieldDeserializer.fieldInfo.name));
                if (jSONLexer.token() == 15) {
                    break;
                }
                check(jSONLexer, c == ']' ? 15 : 16);
            }
            i++;
        }
        jSONLexer.nextToken(16);
        return t;
    }

    protected void check(JSONLexer jSONLexer, int i) {
        if (jSONLexer.token() != i) {
            throw new JSONException("syntax error");
        }
    }

    protected Enum<?> scanEnum(JSONLexer jSONLexer, char c) {
        throw new JSONException("illegal enum. " + jSONLexer.info());
    }

    /* JADX WARN: Code restructure failed: missing block: B:310:0x042e, code lost:
    
        r13 = (T) r1;
        r0 = r16;
        r28 = 0;
     */
    /* JADX WARN: Code restructure failed: missing block: B:367:0x0543, code lost:
    
        r5 = r16;
        r0 = r21;
     */
    /* JADX WARN: Code restructure failed: missing block: B:368:0x0547, code lost:
    
        if (r13 != null) goto L471;
     */
    /* JADX WARN: Code restructure failed: missing block: B:369:0x0549, code lost:
    
        if (r0 != null) goto L377;
     */
    /* JADX WARN: Code restructure failed: missing block: B:370:0x054b, code lost:
    
        r1 = (T) createInstance(r25, r26);
     */
    /* JADX WARN: Code restructure failed: missing block: B:371:0x054f, code lost:
    
        if (r5 != null) goto L373;
     */
    /* JADX WARN: Code restructure failed: missing block: B:372:0x0551, code lost:
    
        r5 = r25.setContext(r15, r1, r27);
     */
    /* JADX WARN: Code restructure failed: missing block: B:373:0x0555, code lost:
    
        if (r5 == null) goto L375;
     */
    /* JADX WARN: Code restructure failed: missing block: B:374:0x0557, code lost:
    
        r5.object = r1;
     */
    /* JADX WARN: Code restructure failed: missing block: B:375:0x0559, code lost:
    
        r25.setContext(r15);
     */
    /* JADX WARN: Code restructure failed: missing block: B:376:0x055c, code lost:
    
        return r1;
     */
    /* JADX WARN: Code restructure failed: missing block: B:377:0x055d, code lost:
    
        r1 = r24.beanInfo.creatorConstructorParameters;
     */
    /* JADX WARN: Code restructure failed: missing block: B:378:0x0561, code lost:
    
        r10 = 0;
     */
    /* JADX WARN: Code restructure failed: missing block: B:379:0x0565, code lost:
    
        if (r1 == null) goto L412;
     */
    /* JADX WARN: Code restructure failed: missing block: B:380:0x0567, code lost:
    
        r7 = new java.lang.Object[r1.length];
        r12 = r28;
     */
    /* JADX WARN: Code restructure failed: missing block: B:382:0x056d, code lost:
    
        if (r12 >= r1.length) goto L543;
     */
    /* JADX WARN: Code restructure failed: missing block: B:383:0x056f, code lost:
    
        r14 = r0.remove(r1[r12]);
     */
    /* JADX WARN: Code restructure failed: missing block: B:384:0x0575, code lost:
    
        if (r14 != null) goto L545;
     */
    /* JADX WARN: Code restructure failed: missing block: B:385:0x0577, code lost:
    
        r3 = r24.beanInfo.creatorConstructorParameterTypes[r12];
        r4 = r24.beanInfo.fields[r12];
     */
    /* JADX WARN: Code restructure failed: missing block: B:386:0x0585, code lost:
    
        if (r3 != java.lang.Byte.TYPE) goto L388;
     */
    /* JADX WARN: Code restructure failed: missing block: B:387:0x0587, code lost:
    
        r14 = java.lang.Byte.valueOf(r28);
     */
    /* JADX WARN: Code restructure failed: missing block: B:389:0x058e, code lost:
    
        if (r3 != java.lang.Short.TYPE) goto L391;
     */
    /* JADX WARN: Code restructure failed: missing block: B:390:0x0590, code lost:
    
        r14 = java.lang.Short.valueOf(r28);
     */
    /* JADX WARN: Code restructure failed: missing block: B:392:0x0597, code lost:
    
        if (r3 != java.lang.Integer.TYPE) goto L394;
     */
    /* JADX WARN: Code restructure failed: missing block: B:393:0x0599, code lost:
    
        r14 = java.lang.Integer.valueOf(r28);
     */
    /* JADX WARN: Code restructure failed: missing block: B:395:0x05a0, code lost:
    
        if (r3 != java.lang.Long.TYPE) goto L397;
     */
    /* JADX WARN: Code restructure failed: missing block: B:396:0x05a2, code lost:
    
        r14 = 0L;
     */
    /* JADX WARN: Code restructure failed: missing block: B:398:0x05a9, code lost:
    
        if (r3 != java.lang.Float.TYPE) goto L400;
     */
    /* JADX WARN: Code restructure failed: missing block: B:399:0x05ab, code lost:
    
        r14 = java.lang.Float.valueOf(0.0f);
     */
    /* JADX WARN: Code restructure failed: missing block: B:401:0x05b3, code lost:
    
        if (r3 != java.lang.Double.TYPE) goto L403;
     */
    /* JADX WARN: Code restructure failed: missing block: B:402:0x05b5, code lost:
    
        r14 = java.lang.Double.valueOf(0.0d);
     */
    /* JADX WARN: Code restructure failed: missing block: B:404:0x05be, code lost:
    
        if (r3 != java.lang.Boolean.TYPE) goto L406;
     */
    /* JADX WARN: Code restructure failed: missing block: B:405:0x05c0, code lost:
    
        r14 = java.lang.Boolean.FALSE;
     */
    /* JADX WARN: Code restructure failed: missing block: B:407:0x05c5, code lost:
    
        if (r3 != java.lang.String.class) goto L553;
     */
    /* JADX WARN: Code restructure failed: missing block: B:409:0x05ce, code lost:
    
        if ((r4.parserFeatures & com.alibaba.fastjson.parser.Feature.InitStringFieldAsEmpty.mask) == 0) goto L554;
     */
    /* JADX WARN: Code restructure failed: missing block: B:410:0x05d0, code lost:
    
        r14 = "";
     */
    /* JADX WARN: Code restructure failed: missing block: B:411:0x05d1, code lost:
    
        r7[r12] = r14;
        r12 = r12 + 1;
     */
    /* JADX WARN: Code restructure failed: missing block: B:412:0x05d6, code lost:
    
        r3 = r24.beanInfo.fields;
        r4 = r3.length;
        r7 = new java.lang.Object[r4];
        r6 = r28;
     */
    /* JADX WARN: Code restructure failed: missing block: B:413:0x05df, code lost:
    
        if (r6 >= r4) goto L560;
     */
    /* JADX WARN: Code restructure failed: missing block: B:414:0x05e1, code lost:
    
        r12 = r3[r6];
        r14 = r0.get(r12.name);
     */
    /* JADX WARN: Code restructure failed: missing block: B:415:0x05e9, code lost:
    
        if (r14 != null) goto L444;
     */
    /* JADX WARN: Code restructure failed: missing block: B:416:0x05eb, code lost:
    
        r10 = r12.fieldType;
     */
    /* JADX WARN: Code restructure failed: missing block: B:417:0x05ef, code lost:
    
        if (r10 != java.lang.Byte.TYPE) goto L421;
     */
    /* JADX WARN: Code restructure failed: missing block: B:418:0x05f1, code lost:
    
        r14 = java.lang.Byte.valueOf(r28);
     */
    /* JADX WARN: Code restructure failed: missing block: B:419:0x05f5, code lost:
    
        r17 = 0;
     */
    /* JADX WARN: Code restructure failed: missing block: B:422:0x05fc, code lost:
    
        if (r10 != java.lang.Short.TYPE) goto L424;
     */
    /* JADX WARN: Code restructure failed: missing block: B:423:0x05fe, code lost:
    
        r14 = java.lang.Short.valueOf(r28);
     */
    /* JADX WARN: Code restructure failed: missing block: B:425:0x0605, code lost:
    
        if (r10 != java.lang.Integer.TYPE) goto L427;
     */
    /* JADX WARN: Code restructure failed: missing block: B:426:0x0607, code lost:
    
        r14 = java.lang.Integer.valueOf(r28);
     */
    /* JADX WARN: Code restructure failed: missing block: B:428:0x060e, code lost:
    
        if (r10 != java.lang.Long.TYPE) goto L430;
     */
    /* JADX WARN: Code restructure failed: missing block: B:429:0x0610, code lost:
    
        r17 = 0;
        r14 = 0L;
     */
    /* JADX WARN: Code restructure failed: missing block: B:430:0x0617, code lost:
    
        r17 = 0;
     */
    /* JADX WARN: Code restructure failed: missing block: B:431:0x061b, code lost:
    
        if (r10 != java.lang.Float.TYPE) goto L433;
     */
    /* JADX WARN: Code restructure failed: missing block: B:432:0x061d, code lost:
    
        r14 = java.lang.Float.valueOf(0.0f);
     */
    /* JADX WARN: Code restructure failed: missing block: B:434:0x0625, code lost:
    
        if (r10 != java.lang.Double.TYPE) goto L436;
     */
    /* JADX WARN: Code restructure failed: missing block: B:435:0x0627, code lost:
    
        r14 = java.lang.Double.valueOf(0.0d);
     */
    /* JADX WARN: Code restructure failed: missing block: B:437:0x0632, code lost:
    
        if (r10 != java.lang.Boolean.TYPE) goto L439;
     */
    /* JADX WARN: Code restructure failed: missing block: B:438:0x0634, code lost:
    
        r14 = java.lang.Boolean.FALSE;
     */
    /* JADX WARN: Code restructure failed: missing block: B:440:0x0639, code lost:
    
        if (r10 != java.lang.String.class) goto L564;
     */
    /* JADX WARN: Code restructure failed: missing block: B:442:0x0642, code lost:
    
        if ((r12.parserFeatures & com.alibaba.fastjson.parser.Feature.InitStringFieldAsEmpty.mask) == 0) goto L565;
     */
    /* JADX WARN: Code restructure failed: missing block: B:443:0x0644, code lost:
    
        r14 = "";
     */
    /* JADX WARN: Code restructure failed: missing block: B:444:0x0646, code lost:
    
        r17 = r10;
     */
    /* JADX WARN: Code restructure failed: missing block: B:445:0x0649, code lost:
    
        r7[r6] = r14;
        r6 = r6 + 1;
        r10 = r17;
     */
    /* JADX WARN: Code restructure failed: missing block: B:447:0x0654, code lost:
    
        if (r24.beanInfo.creatorConstructor == null) goto L463;
     */
    /* JADX WARN: Code restructure failed: missing block: B:448:0x0656, code lost:
    
        r2 = r24.beanInfo.creatorConstructor.newInstance(r7);
     */
    /* JADX WARN: Code restructure failed: missing block: B:449:0x065e, code lost:
    
        if (r1 == null) goto L459;
     */
    /* JADX WARN: Code restructure failed: missing block: B:450:0x0660, code lost:
    
        r0 = r0.entrySet().iterator();
     */
    /* JADX WARN: Code restructure failed: missing block: B:452:0x066c, code lost:
    
        if (r0.hasNext() == false) goto L555;
     */
    /* JADX WARN: Code restructure failed: missing block: B:453:0x066e, code lost:
    
        r1 = r0.next();
        r3 = getFieldDeserializer(r1.getKey());
     */
    /* JADX WARN: Code restructure failed: missing block: B:454:0x067e, code lost:
    
        if (r3 == null) goto L558;
     */
    /* JADX WARN: Code restructure failed: missing block: B:455:0x0680, code lost:
    
        r3.setValue(r2, r1.getValue());
     */
    /* JADX WARN: Code restructure failed: missing block: B:457:0x0688, code lost:
    
        r0 = th;
     */
    /* JADX WARN: Code restructure failed: missing block: B:458:0x0689, code lost:
    
        r1 = (T) r2;
     */
    /* JADX WARN: Code restructure failed: missing block: B:459:0x068c, code lost:
    
        r13 = (T) r2;
     */
    /* JADX WARN: Code restructure failed: missing block: B:460:0x068e, code lost:
    
        r0 = move-exception;
     */
    /* JADX WARN: Code restructure failed: missing block: B:462:0x06b9, code lost:
    
        throw new com.alibaba.fastjson.JSONException("create instance error, " + r1 + ", " + r24.beanInfo.creatorConstructor.toGenericString(), r0);
     */
    /* JADX WARN: Code restructure failed: missing block: B:464:0x06be, code lost:
    
        if (r24.beanInfo.factoryMethod == null) goto L470;
     */
    /* JADX WARN: Code restructure failed: missing block: B:466:0x06c9, code lost:
    
        r13 = (T) r24.beanInfo.factoryMethod.invoke(null, r7);
     */
    /* JADX WARN: Code restructure failed: missing block: B:467:0x06cb, code lost:
    
        r0 = move-exception;
     */
    /* JADX WARN: Code restructure failed: missing block: B:469:0x06ec, code lost:
    
        throw new com.alibaba.fastjson.JSONException("create factory method error, " + r24.beanInfo.factoryMethod.toString(), r0);
     */
    /* JADX WARN: Code restructure failed: missing block: B:470:0x06ed, code lost:
    
        r5.object = r13;
     */
    /* JADX WARN: Code restructure failed: missing block: B:471:0x06ef, code lost:
    
        r0 = r24.beanInfo.buildMethod;
     */
    /* JADX WARN: Code restructure failed: missing block: B:472:0x06f3, code lost:
    
        if (r0 != null) goto L477;
     */
    /* JADX WARN: Code restructure failed: missing block: B:473:0x06f5, code lost:
    
        if (r5 == null) goto L475;
     */
    /* JADX WARN: Code restructure failed: missing block: B:474:0x06f7, code lost:
    
        r5.object = r13;
     */
    /* JADX WARN: Code restructure failed: missing block: B:475:0x06f9, code lost:
    
        r25.setContext(r15);
     */
    /* JADX WARN: Code restructure failed: missing block: B:476:0x06fc, code lost:
    
        return (T) r13;
     */
    /* JADX WARN: Code restructure failed: missing block: B:478:0x06ff, code lost:
    
        r0 = (T) r0.invoke(r13, new java.lang.Object[r28]);
     */
    /* JADX WARN: Code restructure failed: missing block: B:479:0x0705, code lost:
    
        if (r5 == null) goto L481;
     */
    /* JADX WARN: Code restructure failed: missing block: B:480:0x0707, code lost:
    
        r5.object = r13;
     */
    /* JADX WARN: Code restructure failed: missing block: B:481:0x0709, code lost:
    
        r25.setContext(r15);
     */
    /* JADX WARN: Code restructure failed: missing block: B:482:0x070c, code lost:
    
        return r0;
     */
    /* JADX WARN: Code restructure failed: missing block: B:483:0x070d, code lost:
    
        r0 = move-exception;
     */
    /* JADX WARN: Code restructure failed: missing block: B:485:0x0715, code lost:
    
        throw new com.alibaba.fastjson.JSONException("build object error", r0);
     */
    /* JADX WARN: Code restructure failed: missing block: B:486:0x0716, code lost:
    
        r0 = th;
     */
    /* JADX WARN: Code restructure failed: missing block: B:487:0x0717, code lost:
    
        r14 = r5;
        r1 = r13;
     */
    /* JADX WARN: Code restructure failed: missing block: B:502:0x0770, code lost:
    
        r14 = r5;
     */
    /* JADX WARN: Multi-variable type inference failed */
    /* JADX WARN: Removed duplicated region for block: B:231:0x02d3 A[Catch: all -> 0x076f, TryCatch #8 {all -> 0x076f, blocks: (B:80:0x012d, B:82:0x0132, B:84:0x013e, B:86:0x0142, B:90:0x0158, B:92:0x015c, B:231:0x02d3, B:233:0x02dd, B:235:0x02e9, B:372:0x0551, B:238:0x02f4, B:245:0x030a, B:247:0x0314, B:249:0x0320, B:271:0x037a, B:273:0x0383, B:278:0x0393, B:279:0x039a, B:251:0x0326, B:253:0x032e, B:255:0x0334, B:256:0x0337, B:257:0x0343, B:260:0x034c, B:262:0x0350, B:263:0x0353, B:265:0x0357, B:266:0x035a, B:267:0x0366, B:270:0x036e, B:280:0x039b, B:281:0x03b7, B:283:0x03ba, B:287:0x03c4, B:289:0x03ce, B:291:0x03e1, B:294:0x03ea, B:296:0x03f2, B:298:0x0408, B:300:0x0410, B:302:0x0414, B:307:0x0423, B:309:0x042b, B:312:0x0444, B:313:0x044c, B:285:0x03c0, B:318:0x045e, B:320:0x0464, B:321:0x046e, B:323:0x0474, B:95:0x0165, B:100:0x0170, B:107:0x017e, B:110:0x0188, B:115:0x0192, B:117:0x0196, B:120:0x01a0, B:125:0x01aa, B:128:0x01b4, B:133:0x01be, B:136:0x01c8, B:139:0x01ce, B:144:0x01d8, B:149:0x01e2, B:154:0x01ec, B:156:0x01f2, B:159:0x0200, B:161:0x0208, B:163:0x020c, B:166:0x021b, B:171:0x0226, B:174:0x0230, B:179:0x023b, B:182:0x0245, B:187:0x0250, B:190:0x025a, B:193:0x0261, B:196:0x0269, B:199:0x0276, B:202:0x027d, B:205:0x028a, B:208:0x0291, B:211:0x029e, B:214:0x02a4, B:217:0x02b1, B:220:0x02b7, B:223:0x02c6), top: B:525:0x012d }] */
    /* JADX WARN: Removed duplicated region for block: B:315:0x0451  */
    /* JADX WARN: Removed duplicated region for block: B:317:0x045c A[ADDED_TO_REGION] */
    /* JADX WARN: Removed duplicated region for block: B:320:0x0464 A[Catch: all -> 0x076f, TryCatch #8 {all -> 0x076f, blocks: (B:80:0x012d, B:82:0x0132, B:84:0x013e, B:86:0x0142, B:90:0x0158, B:92:0x015c, B:231:0x02d3, B:233:0x02dd, B:235:0x02e9, B:372:0x0551, B:238:0x02f4, B:245:0x030a, B:247:0x0314, B:249:0x0320, B:271:0x037a, B:273:0x0383, B:278:0x0393, B:279:0x039a, B:251:0x0326, B:253:0x032e, B:255:0x0334, B:256:0x0337, B:257:0x0343, B:260:0x034c, B:262:0x0350, B:263:0x0353, B:265:0x0357, B:266:0x035a, B:267:0x0366, B:270:0x036e, B:280:0x039b, B:281:0x03b7, B:283:0x03ba, B:287:0x03c4, B:289:0x03ce, B:291:0x03e1, B:294:0x03ea, B:296:0x03f2, B:298:0x0408, B:300:0x0410, B:302:0x0414, B:307:0x0423, B:309:0x042b, B:312:0x0444, B:313:0x044c, B:285:0x03c0, B:318:0x045e, B:320:0x0464, B:321:0x046e, B:323:0x0474, B:95:0x0165, B:100:0x0170, B:107:0x017e, B:110:0x0188, B:115:0x0192, B:117:0x0196, B:120:0x01a0, B:125:0x01aa, B:128:0x01b4, B:133:0x01be, B:136:0x01c8, B:139:0x01ce, B:144:0x01d8, B:149:0x01e2, B:154:0x01ec, B:156:0x01f2, B:159:0x0200, B:161:0x0208, B:163:0x020c, B:166:0x021b, B:171:0x0226, B:174:0x0230, B:179:0x023b, B:182:0x0245, B:187:0x0250, B:190:0x025a, B:193:0x0261, B:196:0x0269, B:199:0x0276, B:202:0x027d, B:205:0x028a, B:208:0x0291, B:211:0x029e, B:214:0x02a4, B:217:0x02b1, B:220:0x02b7, B:223:0x02c6), top: B:525:0x012d }] */
    /* JADX WARN: Removed duplicated region for block: B:323:0x0474 A[Catch: all -> 0x076f, TRY_LEAVE, TryCatch #8 {all -> 0x076f, blocks: (B:80:0x012d, B:82:0x0132, B:84:0x013e, B:86:0x0142, B:90:0x0158, B:92:0x015c, B:231:0x02d3, B:233:0x02dd, B:235:0x02e9, B:372:0x0551, B:238:0x02f4, B:245:0x030a, B:247:0x0314, B:249:0x0320, B:271:0x037a, B:273:0x0383, B:278:0x0393, B:279:0x039a, B:251:0x0326, B:253:0x032e, B:255:0x0334, B:256:0x0337, B:257:0x0343, B:260:0x034c, B:262:0x0350, B:263:0x0353, B:265:0x0357, B:266:0x035a, B:267:0x0366, B:270:0x036e, B:280:0x039b, B:281:0x03b7, B:283:0x03ba, B:287:0x03c4, B:289:0x03ce, B:291:0x03e1, B:294:0x03ea, B:296:0x03f2, B:298:0x0408, B:300:0x0410, B:302:0x0414, B:307:0x0423, B:309:0x042b, B:312:0x0444, B:313:0x044c, B:285:0x03c0, B:318:0x045e, B:320:0x0464, B:321:0x046e, B:323:0x0474, B:95:0x0165, B:100:0x0170, B:107:0x017e, B:110:0x0188, B:115:0x0192, B:117:0x0196, B:120:0x01a0, B:125:0x01aa, B:128:0x01b4, B:133:0x01be, B:136:0x01c8, B:139:0x01ce, B:144:0x01d8, B:149:0x01e2, B:154:0x01ec, B:156:0x01f2, B:159:0x0200, B:161:0x0208, B:163:0x020c, B:166:0x021b, B:171:0x0226, B:174:0x0230, B:179:0x023b, B:182:0x0245, B:187:0x0250, B:190:0x025a, B:193:0x0261, B:196:0x0269, B:199:0x0276, B:202:0x027d, B:205:0x028a, B:208:0x0291, B:211:0x029e, B:214:0x02a4, B:217:0x02b1, B:220:0x02b7, B:223:0x02c6), top: B:525:0x012d }] */
    /* JADX WARN: Removed duplicated region for block: B:326:0x0487  */
    /* JADX WARN: Removed duplicated region for block: B:353:0x04f3 A[Catch: all -> 0x076a, TryCatch #7 {all -> 0x076a, blocks: (B:494:0x0730, B:328:0x048b, B:361:0x052d, B:364:0x053a, B:366:0x0540, B:489:0x071d, B:491:0x0725, B:495:0x073f, B:496:0x0760, B:331:0x04a0, B:347:0x04cd, B:349:0x04db, B:334:0x04ae, B:336:0x04b4, B:338:0x04b8, B:340:0x04bc, B:342:0x04c0, B:344:0x04c4, B:345:0x04c8, B:353:0x04f3, B:355:0x0514, B:357:0x051a, B:359:0x0525, B:497:0x0761, B:498:0x0769), top: B:524:0x0730 }] */
    /* JADX WARN: Removed duplicated region for block: B:363:0x0535  */
    /* JADX WARN: Removed duplicated region for block: B:364:0x053a A[Catch: all -> 0x076a, TryCatch #7 {all -> 0x076a, blocks: (B:494:0x0730, B:328:0x048b, B:361:0x052d, B:364:0x053a, B:366:0x0540, B:489:0x071d, B:491:0x0725, B:495:0x073f, B:496:0x0760, B:331:0x04a0, B:347:0x04cd, B:349:0x04db, B:334:0x04ae, B:336:0x04b4, B:338:0x04b8, B:340:0x04bc, B:342:0x04c0, B:344:0x04c4, B:345:0x04c8, B:353:0x04f3, B:355:0x0514, B:357:0x051a, B:359:0x0525, B:497:0x0761, B:498:0x0769), top: B:524:0x0730 }] */
    /* JADX WARN: Removed duplicated region for block: B:506:0x0778  */
    /*
        Code decompiled incorrectly, please refer to instructions dump.
        To view partially-correct add '--show-bad-code' argument
    */
    protected <T> T deserialze(com.alibaba.fastjson.parser.DefaultJSONParser r25, java.lang.reflect.Type r26, java.lang.Object r27, java.lang.Object r28, int r29, int[] r30) throws java.lang.Throwable {
        /*
            Method dump skipped, instruction units count: 1923
            To view this dump add '--comments-level debug' option
        */
        throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(com.alibaba.fastjson.parser.DefaultJSONParser, java.lang.reflect.Type, java.lang.Object, java.lang.Object, int, int[]):java.lang.Object");
    }

    protected Enum scanEnum(JSONLexerBase jSONLexerBase, char[] cArr, ObjectDeserializer objectDeserializer) {
        EnumDeserializer enumDeserializer = objectDeserializer instanceof EnumDeserializer ? (EnumDeserializer) objectDeserializer : null;
        if (enumDeserializer == null) {
            jSONLexerBase.matchStat = -1;
            return null;
        }
        long jScanFieldSymbol = jSONLexerBase.scanFieldSymbol(cArr);
        if (jSONLexerBase.matchStat > 0) {
            return enumDeserializer.getEnumByHashCode(jScanFieldSymbol);
        }
        return null;
    }

    public boolean parseField(DefaultJSONParser defaultJSONParser, String str, Object obj, Type type, Map<String, Object> map) {
        return parseField(defaultJSONParser, str, obj, type, map, null);
    }

    public boolean parseField(DefaultJSONParser defaultJSONParser, String str, Object obj, Type type, Map<String, Object> map, int[] iArr) {
        FieldDeserializer fieldDeserializer;
        boolean z;
        JSONLexer jSONLexer;
        JSONLexer jSONLexer2;
        JSONLexer jSONLexer3 = defaultJSONParser.lexer;
        int i = Feature.DisableFieldSmartMatch.mask;
        if (jSONLexer3.isEnabled(i) || (i & this.beanInfo.parserFeatures) != 0) {
            fieldDeserializer = getFieldDeserializer(str);
        } else {
            fieldDeserializer = smartMatch(str, iArr);
        }
        int i2 = Feature.SupportNonPublicField.mask;
        if (fieldDeserializer != null || (!jSONLexer3.isEnabled(i2) && (i2 & this.beanInfo.parserFeatures) == 0)) {
            z = true;
            jSONLexer = jSONLexer3;
        } else {
            if (this.extraFieldDeserializers == null) {
                ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap(1, 0.75f, 1);
                for (Class<?> superclass = this.clazz; superclass != null && superclass != Object.class; superclass = superclass.getSuperclass()) {
                    for (Field field : superclass.getDeclaredFields()) {
                        String name = field.getName();
                        if (getFieldDeserializer(name) == null) {
                            int modifiers = field.getModifiers();
                            if ((modifiers & 16) == 0 && (modifiers & 8) == 0) {
                                concurrentHashMap.put(name, field);
                            }
                        }
                    }
                }
                this.extraFieldDeserializers = concurrentHashMap;
            }
            Object obj2 = this.extraFieldDeserializers.get(str);
            if (obj2 == null) {
                jSONLexer = jSONLexer3;
                z = true;
            } else if (obj2 instanceof FieldDeserializer) {
                fieldDeserializer = (FieldDeserializer) obj2;
                jSONLexer = jSONLexer3;
                z = true;
            } else {
                Field field2 = (Field) obj2;
                field2.setAccessible(true);
                z = true;
                jSONLexer = jSONLexer3;
                fieldDeserializer = new DefaultFieldDeserializer(defaultJSONParser.getConfig(), this.clazz, new FieldInfo(str, field2.getDeclaringClass(), field2.getType(), field2.getGenericType(), field2, 0, 0, 0));
                this.extraFieldDeserializers.put(str, fieldDeserializer);
            }
        }
        if (fieldDeserializer == null) {
            if (!jSONLexer.isEnabled(Feature.IgnoreNotMatch)) {
                throw new JSONException("setter not found, class " + this.clazz.getName() + ", property " + str);
            }
            for (FieldDeserializer fieldDeserializer2 : this.sortedFieldDeserializers) {
                FieldInfo fieldInfo = fieldDeserializer2.fieldInfo;
                if (fieldInfo.unwrapped && (fieldDeserializer2 instanceof DefaultFieldDeserializer)) {
                    if (fieldInfo.field != null) {
                        DefaultFieldDeserializer defaultFieldDeserializer = (DefaultFieldDeserializer) fieldDeserializer2;
                        ObjectDeserializer fieldValueDeserilizer = defaultFieldDeserializer.getFieldValueDeserilizer(defaultJSONParser.getConfig());
                        if (fieldValueDeserilizer instanceof JavaBeanDeserializer) {
                            FieldDeserializer fieldDeserializer3 = ((JavaBeanDeserializer) fieldValueDeserilizer).getFieldDeserializer(str);
                            if (fieldDeserializer3 != null) {
                                try {
                                    Object objCreateInstance = fieldInfo.field.get(obj);
                                    if (objCreateInstance == null) {
                                        objCreateInstance = ((JavaBeanDeserializer) fieldValueDeserilizer).createInstance(defaultJSONParser, fieldInfo.fieldType);
                                        fieldDeserializer2.setValue(obj, objCreateInstance);
                                    }
                                    jSONLexer.nextTokenWithColon(defaultFieldDeserializer.getFastMatchToken());
                                    fieldDeserializer3.parseField(defaultJSONParser, objCreateInstance, type, map);
                                    return z;
                                } catch (Exception e) {
                                    throw new JSONException("parse unwrapped field error.", e);
                                }
                            }
                        } else if (fieldValueDeserilizer instanceof MapDeserializer) {
                            MapDeserializer mapDeserializer = (MapDeserializer) fieldValueDeserilizer;
                            try {
                                Map<Object, Object> mapCreateMap = (Map) fieldInfo.field.get(obj);
                                if (mapCreateMap == null) {
                                    mapCreateMap = mapDeserializer.createMap(fieldInfo.fieldType);
                                    fieldDeserializer2.setValue(obj, mapCreateMap);
                                }
                                jSONLexer.nextTokenWithColon();
                                mapCreateMap.put(str, defaultJSONParser.parse(str));
                                return z;
                            } catch (Exception e2) {
                                throw new JSONException("parse unwrapped field error.", e2);
                            }
                        }
                    } else if (fieldInfo.method.getParameterTypes().length == 2) {
                        jSONLexer.nextTokenWithColon();
                        try {
                            fieldInfo.method.invoke(obj, str, defaultJSONParser.parse(str));
                            return z;
                        } catch (Exception e3) {
                            throw new JSONException("parse unwrapped field error.", e3);
                        }
                    }
                }
            }
            defaultJSONParser.parseExtra(obj, str);
            return false;
        }
        int i3 = 0;
        while (true) {
            FieldDeserializer[] fieldDeserializerArr = this.sortedFieldDeserializers;
            if (i3 >= fieldDeserializerArr.length) {
                i3 = -1;
                break;
            }
            if (fieldDeserializerArr[i3] == fieldDeserializer) {
                break;
            }
            i3++;
        }
        if (i3 != -1) {
            jSONLexer2 = jSONLexer;
            if (iArr != null && str.startsWith("_") && isSetFlag(i3, iArr)) {
                defaultJSONParser.parseExtra(obj, str);
                return false;
            }
        } else {
            jSONLexer2 = jSONLexer;
        }
        jSONLexer2.nextTokenWithColon(fieldDeserializer.getFastMatchToken());
        fieldDeserializer.parseField(defaultJSONParser, obj, type, map);
        return z;
    }

    public FieldDeserializer smartMatch(String str) {
        return smartMatch(str, null);
    }

    public FieldDeserializer smartMatch(String str, int[] iArr) {
        boolean zStartsWith;
        if (str == null) {
            return null;
        }
        FieldDeserializer fieldDeserializer = getFieldDeserializer(str, iArr);
        if (fieldDeserializer == null) {
            long jFnv1a_64_lower = TypeUtils.fnv1a_64_lower(str);
            int i = 0;
            if (this.smartMatchHashArray == null) {
                long[] jArr = new long[this.sortedFieldDeserializers.length];
                int i2 = 0;
                while (true) {
                    FieldDeserializer[] fieldDeserializerArr = this.sortedFieldDeserializers;
                    if (i2 >= fieldDeserializerArr.length) {
                        break;
                    }
                    jArr[i2] = TypeUtils.fnv1a_64_lower(fieldDeserializerArr[i2].fieldInfo.name);
                    i2++;
                }
                Arrays.sort(jArr);
                this.smartMatchHashArray = jArr;
            }
            int iBinarySearch = Arrays.binarySearch(this.smartMatchHashArray, jFnv1a_64_lower);
            if (iBinarySearch < 0) {
                zStartsWith = str.startsWith("is");
                if (zStartsWith) {
                    iBinarySearch = Arrays.binarySearch(this.smartMatchHashArray, TypeUtils.fnv1a_64_lower(str.substring(2)));
                }
            } else {
                zStartsWith = false;
            }
            if (iBinarySearch >= 0) {
                if (this.smartMatchHashArrayMapping == null) {
                    short[] sArr = new short[this.smartMatchHashArray.length];
                    Arrays.fill(sArr, (short) -1);
                    while (true) {
                        FieldDeserializer[] fieldDeserializerArr2 = this.sortedFieldDeserializers;
                        if (i >= fieldDeserializerArr2.length) {
                            break;
                        }
                        int iBinarySearch2 = Arrays.binarySearch(this.smartMatchHashArray, TypeUtils.fnv1a_64_lower(fieldDeserializerArr2[i].fieldInfo.name));
                        if (iBinarySearch2 >= 0) {
                            sArr[iBinarySearch2] = (short) i;
                        }
                        i++;
                    }
                    this.smartMatchHashArrayMapping = sArr;
                }
                short s = this.smartMatchHashArrayMapping[iBinarySearch];
                if (s != -1 && !isSetFlag(s, iArr)) {
                    fieldDeserializer = this.sortedFieldDeserializers[s];
                }
            }
            if (fieldDeserializer != null) {
                FieldInfo fieldInfo = fieldDeserializer.fieldInfo;
                if ((fieldInfo.parserFeatures & Feature.DisableFieldSmartMatch.mask) != 0) {
                    return null;
                }
                Class<?> cls = fieldInfo.fieldClass;
                if (zStartsWith && cls != Boolean.TYPE && cls != Boolean.class) {
                    return null;
                }
            }
        }
        return fieldDeserializer;
    }

    public Object createInstance(Map<String, Object> map, ParserConfig parserConfig) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        Integer num;
        if (this.beanInfo.creatorConstructor == null && this.beanInfo.factoryMethod == null) {
            Object objCreateInstance = createInstance((DefaultJSONParser) null, this.clazz);
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                String key = entry.getKey();
                Object value = entry.getValue();
                FieldDeserializer fieldDeserializerSmartMatch = smartMatch(key);
                if (fieldDeserializerSmartMatch != null) {
                    fieldDeserializerSmartMatch.setValue(objCreateInstance, TypeUtils.cast(value, fieldDeserializerSmartMatch.fieldInfo.fieldType, parserConfig));
                }
            }
            if (this.beanInfo.buildMethod == null) {
                return objCreateInstance;
            }
            try {
                return this.beanInfo.buildMethod.invoke(objCreateInstance, new Object[0]);
            } catch (Exception e) {
                throw new JSONException("build object error", e);
            }
        }
        FieldInfo[] fieldInfoArr = this.beanInfo.fields;
        int length = fieldInfoArr.length;
        Object[] objArr = new Object[length];
        HashMap map2 = null;
        for (int i = 0; i < length; i++) {
            FieldInfo fieldInfo = fieldInfoArr[i];
            Object objValueOf = map.get(fieldInfo.name);
            if (objValueOf == null) {
                Class<?> cls = fieldInfo.fieldClass;
                if (cls == Integer.TYPE) {
                    objValueOf = 0;
                } else if (cls == Long.TYPE) {
                    objValueOf = 0L;
                } else if (cls == Short.TYPE) {
                    objValueOf = (short) 0;
                } else if (cls == Byte.TYPE) {
                    objValueOf = (byte) 0;
                } else if (cls == Float.TYPE) {
                    objValueOf = Float.valueOf(0.0f);
                } else if (cls == Double.TYPE) {
                    objValueOf = Double.valueOf(0.0d);
                } else if (cls == Character.TYPE) {
                    objValueOf = '0';
                } else if (cls == Boolean.TYPE) {
                    objValueOf = false;
                }
                if (map2 == null) {
                    map2 = new HashMap();
                }
                map2.put(fieldInfo.name, Integer.valueOf(i));
            }
            objArr[i] = objValueOf;
        }
        if (map2 != null) {
            for (Map.Entry<String, Object> entry2 : map.entrySet()) {
                String key2 = entry2.getKey();
                Object value2 = entry2.getValue();
                FieldDeserializer fieldDeserializerSmartMatch2 = smartMatch(key2);
                if (fieldDeserializerSmartMatch2 != null && (num = (Integer) map2.get(fieldDeserializerSmartMatch2.fieldInfo.name)) != null) {
                    objArr[num.intValue()] = value2;
                }
            }
        }
        if (this.beanInfo.creatorConstructor != null) {
            try {
                return this.beanInfo.creatorConstructor.newInstance(objArr);
            } catch (Exception e2) {
                throw new JSONException("create instance error, " + this.beanInfo.creatorConstructor.toGenericString(), e2);
            }
        }
        if (this.beanInfo.factoryMethod == null) {
            return null;
        }
        try {
            return this.beanInfo.factoryMethod.invoke(null, objArr);
        } catch (Exception e3) {
            throw new JSONException("create factory method error, " + this.beanInfo.factoryMethod.toString(), e3);
        }
    }

    public Type getFieldType(int i) {
        return this.sortedFieldDeserializers[i].fieldInfo.fieldType;
    }

    protected Object parseRest(DefaultJSONParser defaultJSONParser, Type type, Object obj, Object obj2, int i) {
        return parseRest(defaultJSONParser, type, obj, obj2, i, new int[0]);
    }

    protected Object parseRest(DefaultJSONParser defaultJSONParser, Type type, Object obj, Object obj2, int i, int[] iArr) {
        return deserialze(defaultJSONParser, type, obj, obj2, i, iArr);
    }

    protected JavaBeanDeserializer getSeeAlso(ParserConfig parserConfig, JavaBeanInfo javaBeanInfo, String str) {
        if (javaBeanInfo.jsonType == null) {
            return null;
        }
        for (Class<?> cls : javaBeanInfo.jsonType.seeAlso()) {
            ObjectDeserializer deserializer = parserConfig.getDeserializer(cls);
            if (deserializer instanceof JavaBeanDeserializer) {
                JavaBeanDeserializer javaBeanDeserializer = (JavaBeanDeserializer) deserializer;
                JavaBeanInfo javaBeanInfo2 = javaBeanDeserializer.beanInfo;
                if (javaBeanInfo2.typeName.equals(str)) {
                    return javaBeanDeserializer;
                }
                JavaBeanDeserializer seeAlso = getSeeAlso(parserConfig, javaBeanInfo2, str);
                if (seeAlso != null) {
                    return seeAlso;
                }
            }
        }
        return null;
    }

    protected static void parseArray(Collection collection, ObjectDeserializer objectDeserializer, DefaultJSONParser defaultJSONParser, Type type, Object obj) {
        JSONLexerBase jSONLexerBase = (JSONLexerBase) defaultJSONParser.lexer;
        int i = jSONLexerBase.token();
        if (i == 8) {
            jSONLexerBase.nextToken(16);
            jSONLexerBase.token();
            return;
        }
        if (i != 14) {
            defaultJSONParser.throwException(i);
        }
        if (jSONLexerBase.getCurrent() == '[') {
            jSONLexerBase.next();
            jSONLexerBase.setToken(14);
        } else {
            jSONLexerBase.nextToken(14);
        }
        if (jSONLexerBase.token() == 15) {
            jSONLexerBase.nextToken();
            return;
        }
        int i2 = 0;
        while (true) {
            collection.add(objectDeserializer.deserialze(defaultJSONParser, type, Integer.valueOf(i2)));
            i2++;
            if (jSONLexerBase.token() != 16) {
                break;
            }
            if (jSONLexerBase.getCurrent() == '[') {
                jSONLexerBase.next();
                jSONLexerBase.setToken(14);
            } else {
                jSONLexerBase.nextToken(14);
            }
        }
        int i3 = jSONLexerBase.token();
        if (i3 != 15) {
            defaultJSONParser.throwException(i3);
        }
        if (jSONLexerBase.getCurrent() == ',') {
            jSONLexerBase.next();
            jSONLexerBase.setToken(16);
        } else {
            jSONLexerBase.nextToken(16);
        }
    }
}
