JavaBeanInfo.smali

.class Lcom/alibaba/fastjson/parser/JavaBeanInfo;
.super Ljava/lang/Object;
.source "JavaBeanInfo.java"


# instance fields
.field final creatorConstructor:Ljava/lang/reflect/Constructor;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/lang/reflect/Constructor<",
            "*>;"
        }
    .end annotation
.end field

.field public final creatorConstructorParameters:[Ljava/lang/String;

.field final defaultConstructor:Ljava/lang/reflect/Constructor;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/lang/reflect/Constructor<",
            "*>;"
        }
    .end annotation
.end field

.field final defaultConstructorParameterSize:I

.field final factoryMethod:Ljava/lang/reflect/Method;

.field final fields:[Lcom/alibaba/fastjson/util/FieldInfo;

.field final jsonType:Lcom/alibaba/fastjson/annotation/JSONType;

.field ordered:Z

.field public final parserFeatures:I

.field final sortedFields:[Lcom/alibaba/fastjson/util/FieldInfo;

.field final supportBeanToArray:Z

.field public final typeKey:Ljava/lang/String;

.field public final typeKeyHashCode:J

.field public final typeName:Ljava/lang/String;


# direct methods
.method constructor <init>(Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Method;[Lcom/alibaba/fastjson/util/FieldInfo;[Lcom/alibaba/fastjson/util/FieldInfo;Lcom/alibaba/fastjson/annotation/JSONType;[Ljava/lang/String;)V
    .registers 13
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;",
            "Ljava/lang/reflect/Constructor<",
            "*>;",
            "Ljava/lang/reflect/Constructor<",
            "*>;",
            "Ljava/lang/reflect/Method;",
            "[",
            "Lcom/alibaba/fastjson/util/FieldInfo;",
            "[",
            "Lcom/alibaba/fastjson/util/FieldInfo;",
            "Lcom/alibaba/fastjson/annotation/JSONType;",
            "[",
            "Ljava/lang/String;",
            ")V"
        }
    .end annotation

    .line 1
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    const/4 v0, 0x0

    .line 2
    iput-boolean v0, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->ordered:Z

    .line 3
    iput-object p2, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->defaultConstructor:Ljava/lang/reflect/Constructor;

    .line 4
    iput-object p3, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->creatorConstructor:Ljava/lang/reflect/Constructor;

    .line 5
    iput-object p4, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->factoryMethod:Ljava/lang/reflect/Method;

    .line 6
    iput-object p5, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->fields:[Lcom/alibaba/fastjson/util/FieldInfo;

    .line 7
    iput-object p7, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->jsonType:Lcom/alibaba/fastjson/annotation/JSONType;

    const/4 p3, 0x0

    if-eqz p8, :cond_1a

    .line 8
    array-length v1, p8

    array-length v2, p5

    if-ne v1, v2, :cond_1a

    .line 9
    iput-object p3, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->creatorConstructorParameters:[Ljava/lang/String;

    goto :goto_1c

    .line 10
    :cond_1a
    iput-object p8, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->creatorConstructorParameters:[Ljava/lang/String;

    :goto_1c
    if-eqz p7, :cond_4e

    .line 11
    invoke-interface {p7}, Lcom/alibaba/fastjson/annotation/JSONType;->typeName()Ljava/lang/String;

    move-result-object p8

    .line 12
    invoke-virtual {p8}, Ljava/lang/String;->length()I

    move-result v1

    if-lez v1, :cond_29

    goto :goto_2d

    :cond_29
    invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object p8

    :goto_2d
    iput-object p8, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->typeName:Ljava/lang/String;

    .line 13
    invoke-interface {p7}, Lcom/alibaba/fastjson/annotation/JSONType;->typeKey()Ljava/lang/String;

    move-result-object p1

    .line 14
    invoke-virtual {p1}, Ljava/lang/String;->length()I

    move-result p8

    if-lez p8, :cond_3a

    goto :goto_3b

    :cond_3a
    move-object p1, p3

    :goto_3b
    iput-object p1, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->typeKey:Ljava/lang/String;

    .line 15
    invoke-interface {p7}, Lcom/alibaba/fastjson/annotation/JSONType;->parseFeatures()[Lcom/alibaba/fastjson/parser/Feature;

    move-result-object p1

    array-length p3, p1

    const/4 p8, 0x0

    const/4 v1, 0x0

    :goto_44
    if-ge p8, p3, :cond_57

    aget-object v2, p1, p8

    .line 16
    iget v2, v2, Lcom/alibaba/fastjson/parser/Feature;->mask:I

    or-int/2addr v1, v2

    add-int/lit8 p8, p8, 0x1

    goto :goto_44

    .line 17
    :cond_4e
    invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object p1

    iput-object p1, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->typeName:Ljava/lang/String;

    .line 18
    iput-object p3, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->typeKey:Ljava/lang/String;

    const/4 v1, 0x0

    .line 19
    :cond_57
    iget-object p1, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->typeKey:Ljava/lang/String;

    if-nez p1, :cond_60

    const-wide/16 v2, 0x0

    .line 20
    iput-wide v2, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->typeKeyHashCode:J

    goto :goto_66

    .line 21
    :cond_60
    invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->fnv_64_lower(Ljava/lang/String;)J

    move-result-wide v2

    iput-wide v2, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->typeKeyHashCode:J

    .line 22
    :goto_66
    iput v1, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->parserFeatures:I

    if-eqz p7, :cond_7d

    .line 23
    invoke-interface {p7}, Lcom/alibaba/fastjson/annotation/JSONType;->parseFeatures()[Lcom/alibaba/fastjson/parser/Feature;

    move-result-object p1

    array-length p3, p1

    const/4 p7, 0x0

    const/4 p8, 0x0

    :goto_71
    if-ge p7, p3, :cond_7e

    aget-object v1, p1, p7

    .line 24
    sget-object v2, Lcom/alibaba/fastjson/parser/Feature;->SupportArrayToBean:Lcom/alibaba/fastjson/parser/Feature;

    if-ne v1, v2, :cond_7a

    const/4 p8, 0x1

    :cond_7a
    add-int/lit8 p7, p7, 0x1

    goto :goto_71

    :cond_7d
    const/4 p8, 0x0

    .line 25
    :cond_7e
    iput-boolean p8, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->supportBeanToArray:Z

    .line 26
    invoke-direct {p0, p5, p6}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->computeSortedFields([Lcom/alibaba/fastjson/util/FieldInfo;[Lcom/alibaba/fastjson/util/FieldInfo;)[Lcom/alibaba/fastjson/util/FieldInfo;

    move-result-object p1

    .line 27
    invoke-static {p5, p1}, Ljava/util/Arrays;->equals([Ljava/lang/Object;[Ljava/lang/Object;)Z

    move-result p3

    if-eqz p3, :cond_8b

    move-object p1, p5

    :cond_8b
    iput-object p1, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->sortedFields:[Lcom/alibaba/fastjson/util/FieldInfo;

    if-eqz p2, :cond_95

    .line 28
    invoke-virtual {p2}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object p1

    array-length v0, p1

    goto :goto_9c

    :cond_95
    if-eqz p4, :cond_9c

    .line 29
    invoke-virtual {p4}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object p1

    array-length v0, p1

    :cond_9c
    :goto_9c
    iput v0, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->defaultConstructorParameterSize:I

    return-void
.end method

.method static addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List<",
            "Lcom/alibaba/fastjson/util/FieldInfo;",
            ">;",
            "Lcom/alibaba/fastjson/util/FieldInfo;",
            "Z)Z"
        }
    .end annotation

    if-nez p2, :cond_27

    .line 1
    invoke-interface {p0}, Ljava/util/List;->size()I

    move-result p2

    const/4 v0, 0x0

    const/4 v1, 0x0

    :goto_8
    if-ge v1, p2, :cond_27

    .line 2
    invoke-interface {p0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/alibaba/fastjson/util/FieldInfo;

    .line 3
    iget-object v3, v2, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    iget-object v4, p1, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_24

    .line 4
    iget-boolean v2, v2, Lcom/alibaba/fastjson/util/FieldInfo;->getOnly:Z

    if-eqz v2, :cond_23

    iget-boolean v2, p1, Lcom/alibaba/fastjson/util/FieldInfo;->getOnly:Z

    if-nez v2, :cond_23

    goto :goto_24

    :cond_23
    return v0

    :cond_24
    :goto_24
    add-int/lit8 v1, v1, 0x1

    goto :goto_8

    .line 5
    :cond_27
    invoke-interface {p0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    const/4 p0, 0x1

    return p0
.end method

.method public static build(Ljava/lang/Class;ILjava/lang/reflect/Type;ZZZZLcom/alibaba/fastjson/PropertyNamingStrategy;)Lcom/alibaba/fastjson/parser/JavaBeanInfo;
    .registers 44
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;I",
            "Ljava/lang/reflect/Type;",
            "ZZZZ",
            "Lcom/alibaba/fastjson/PropertyNamingStrategy;",
            ")",
            "Lcom/alibaba/fastjson/parser/JavaBeanInfo;"
        }
    .end annotation

    move-object/from16 v11, p0

    move/from16 v12, p1

    move/from16 v13, p3

    move-object/from16 v14, p7

    .line 1
    new-instance v15, Ljava/util/ArrayList;

    invoke-direct {v15}, Ljava/util/ArrayList;-><init>()V

    .line 2
    new-instance v10, Ljava/util/HashMap;

    invoke-direct {v10}, Ljava/util/HashMap;-><init>()V

    .line 3
    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getDeclaredConstructors()[Ljava/lang/reflect/Constructor;

    move-result-object v0

    .line 4
    invoke-static/range {p0 .. p0}, Lcom/alibaba/fastjson/util/TypeUtils;->isKotlin(Ljava/lang/Class;)Z

    move-result v1

    and-int/lit16 v2, v12, 0x400

    const/16 v16, 0x0

    const/4 v9, 0x1

    const/4 v8, 0x0

    if-nez v2, :cond_63

    .line 5
    array-length v3, v0

    if-eq v3, v9, :cond_27

    if-nez v1, :cond_63

    .line 6
    :cond_27
    :try_start_27
    new-array v3, v8, [Ljava/lang/Class;

    invoke-virtual {v11, v3}, Ljava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;

    move-result-object v3
    :try_end_2d
    .catch Ljava/lang/Exception; {:try_start_27 .. :try_end_2d} :catch_2e

    goto :goto_30

    :catch_2e
    move-object/from16 v3, v16

    :goto_30
    if-nez v3, :cond_5e

    .line 7
    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->isMemberClass()Z

    move-result v4

    if-eqz v4, :cond_5e

    and-int/lit8 v4, v12, 0x8

    if-nez v4, :cond_5e

    .line 8
    array-length v4, v0

    const/4 v5, 0x0

    :goto_3e
    if-ge v5, v4, :cond_5e

    aget-object v6, v0, v5

    .line 9
    invoke-virtual {v6}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v7

    move-object/from16 v17, v3

    .line 10
    array-length v3, v7

    if-ne v3, v9, :cond_59

    aget-object v3, v7, v8

    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getDeclaringClass()Ljava/lang/Class;

    move-result-object v7

    invoke-virtual {v3, v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_59

    move-object v7, v6

    goto :goto_65

    :cond_59
    add-int/lit8 v5, v5, 0x1

    move-object/from16 v3, v17

    goto :goto_3e

    :cond_5e
    move-object/from16 v17, v3

    move-object/from16 v7, v17

    goto :goto_65

    :cond_63
    move-object/from16 v7, v16

    :goto_65
    const/16 v17, 0x0

    if-eqz v13, :cond_6e

    move-object/from16 v8, v16

    move-object v9, v8

    goto/16 :goto_d7

    .line 11
    :cond_6e
    new-instance v3, Ljava/util/ArrayList;

    invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V

    move-object v4, v11

    move-object/from16 v5, v16

    :goto_76
    if-eqz v4, :cond_cc

    .line 12
    const-class v6, Ljava/lang/Object;

    if-eq v4, v6, :cond_cc

    .line 13
    invoke-virtual {v4}, Ljava/lang/Class;->getDeclaredMethods()[Ljava/lang/reflect/Method;

    move-result-object v6

    .line 14
    array-length v9, v6

    move-object/from16 v19, v5

    const/4 v5, 0x0

    :goto_84
    if-ge v5, v9, :cond_c3

    aget-object v8, v6, v5

    move-object/from16 v21, v6

    .line 15
    invoke-virtual {v8}, Ljava/lang/reflect/Method;->getModifiers()I

    move-result v6

    and-int/lit8 v22, v6, 0x8

    if-eqz v22, :cond_a9

    .line 16
    const-class v6, Lcom/alibaba/fastjson/annotation/JSONCreator;

    invoke-virtual {v8, v6}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z

    move-result v6

    if-eqz v6, :cond_9e

    if-nez v19, :cond_a1

    move-object/from16 v19, v8

    :cond_9e
    move/from16 v22, v9

    goto :goto_bb

    .line 17
    :cond_a1
    new-instance v0, Lcom/alibaba/fastjson/JSONException;

    const-string v1, "multi-json creator"

    invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_a9
    and-int/lit8 v22, v6, 0x2

    if-nez v22, :cond_9e

    move/from16 v22, v9

    and-int/lit16 v9, v6, 0x100

    if-nez v9, :cond_bb

    and-int/lit8 v6, v6, 0x4

    if-eqz v6, :cond_b8

    goto :goto_bb

    .line 18
    :cond_b8
    invoke-interface {v3, v8}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    :cond_bb
    :goto_bb
    add-int/lit8 v5, v5, 0x1

    move-object/from16 v6, v21

    move/from16 v9, v22

    const/4 v8, 0x0

    goto :goto_84

    .line 19
    :cond_c3
    invoke-virtual {v4}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v4

    move-object/from16 v5, v19

    const/4 v8, 0x0

    const/4 v9, 0x1

    goto :goto_76

    .line 20
    :cond_cc
    invoke-interface {v3}, Ljava/util/List;->size()I

    move-result v4

    new-array v4, v4, [Ljava/lang/reflect/Method;

    .line 21
    invoke-interface {v3, v4}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    move-object v8, v4

    move-object v9, v5

    .line 22
    :goto_d7
    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getDeclaredFields()[Ljava/lang/reflect/Field;

    move-result-object v6

    .line 23
    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->isInterface()Z

    move-result v3

    if-nez v3, :cond_e6

    if-eqz v2, :cond_e4

    goto :goto_e6

    :cond_e4
    const/4 v2, 0x0

    goto :goto_e7

    :cond_e6
    :goto_e6
    const/4 v2, 0x1

    :goto_e7
    if-eqz v7, :cond_f5

    if-eqz v2, :cond_ec

    goto :goto_f5

    :cond_ec
    move-object/from16 v28, v8

    move-object v14, v10

    move-object/from16 v21, v16

    const/4 v8, 0x0

    move-object v10, v6

    goto/16 :goto_3d5

    .line 24
    :cond_f5
    :goto_f5
    array-length v3, v0

    const/4 v4, 0x0

    :goto_f7
    if-ge v4, v3, :cond_10d

    aget-object v5, v0, v4

    move/from16 v19, v3

    .line 25
    const-class v3, Lcom/alibaba/fastjson/annotation/JSONCreator;

    invoke-virtual {v5, v3}, Ljava/lang/reflect/Constructor;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v3

    check-cast v3, Lcom/alibaba/fastjson/annotation/JSONCreator;

    if-eqz v3, :cond_108

    goto :goto_10f

    :cond_108
    add-int/lit8 v4, v4, 0x1

    move/from16 v3, v19

    goto :goto_f7

    :cond_10d
    move-object/from16 v5, v16

    :goto_10f
    const-string v4, "illegal json creator"

    if-eqz v5, :cond_1ef

    .line 26
    invoke-static {v11, v5, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    .line 27
    invoke-virtual {v5}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v3

    if-eqz p6, :cond_123

    .line 28
    invoke-virtual {v5}, Ljava/lang/reflect/Constructor;->getGenericParameterTypes()[Ljava/lang/reflect/Type;

    move-result-object v0

    move-object/from16 v17, v0

    goto :goto_125

    :cond_123
    move-object/from16 v17, v3

    .line 29
    :goto_125
    invoke-virtual {v5}, Ljava/lang/reflect/Constructor;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;

    move-result-object v19

    const/4 v2, 0x0

    .line 30
    :goto_12a
    array-length v0, v3

    if-ge v2, v0, :cond_1af

    .line 31
    aget-object v0, v19, v2

    .line 32
    array-length v1, v0

    move-object/from16 v21, v4

    const/4 v4, 0x0

    :goto_133
    if-ge v4, v1, :cond_14a

    move/from16 v22, v1

    aget-object v1, v0, v4

    move-object/from16 v23, v0

    .line 33
    instance-of v0, v1, Lcom/alibaba/fastjson/annotation/JSONField;

    if-eqz v0, :cond_143

    .line 34
    move-object v0, v1

    check-cast v0, Lcom/alibaba/fastjson/annotation/JSONField;

    goto :goto_14c

    :cond_143
    add-int/lit8 v4, v4, 0x1

    move/from16 v1, v22

    move-object/from16 v0, v23

    goto :goto_133

    :cond_14a
    move-object/from16 v0, v16

    :goto_14c
    if-eqz v0, :cond_1a7

    .line 35
    aget-object v4, v3, v2

    .line 36
    aget-object v22, v17, v2

    .line 37
    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    invoke-static {v11, v1, v6, v10}, Lcom/alibaba/fastjson/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;Ljava/util/Map;)Ljava/lang/reflect/Field;

    move-result-object v1

    if-eqz v1, :cond_15f

    .line 38
    invoke-static {v11, v1, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    .line 39
    :cond_15f
    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I

    move-result v23

    .line 40
    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;

    move-result-object v24

    invoke-static/range {v24 .. v24}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I

    move-result v24

    .line 41
    new-instance v14, Lcom/alibaba/fastjson/util/FieldInfo;

    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v25

    move-object v0, v14

    move-object/from16 v26, v1

    move-object/from16 v1, v25

    move/from16 v25, v2

    move-object/from16 v2, p0

    move-object/from16 v27, v3

    move-object v3, v4

    move-object/from16 v28, v8

    move-object/from16 v8, v21

    move-object/from16 v4, v22

    move-object/from16 v21, v5

    move-object/from16 v5, v26

    move-object/from16 v22, v10

    move-object v10, v6

    move/from16 v6, v23

    move-object/from16 v29, v7

    move/from16 v7, v24

    invoke-direct/range {v0 .. v7}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Field;II)V

    .line 42
    invoke-static {v15, v14, v13}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z

    add-int/lit8 v2, v25, 0x1

    move-object/from16 v14, p7

    move-object v4, v8

    move-object v6, v10

    move-object/from16 v5, v21

    move-object/from16 v10, v22

    move-object/from16 v3, v27

    move-object/from16 v8, v28

    move-object/from16 v7, v29

    goto :goto_12a

    :cond_1a7
    move-object/from16 v8, v21

    .line 43
    new-instance v0, Lcom/alibaba/fastjson/JSONException;

    invoke-direct {v0, v8}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_1af
    move-object/from16 v21, v5

    move-object/from16 v29, v7

    move-object/from16 v28, v8

    move-object/from16 v22, v10

    move-object v10, v6

    .line 44
    invoke-interface {v15}, Ljava/util/List;->size()I

    move-result v0

    new-array v0, v0, [Lcom/alibaba/fastjson/util/FieldInfo;

    .line 45
    invoke-interface {v15, v0}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    .line 46
    array-length v1, v0

    new-array v1, v1, [Lcom/alibaba/fastjson/util/FieldInfo;

    .line 47
    array-length v2, v0

    const/4 v3, 0x0

    invoke-static {v0, v3, v1, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 48
    invoke-static {v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V

    if-eqz p4, :cond_1d6

    .line 49
    const-class v1, Lcom/alibaba/fastjson/annotation/JSONType;

    invoke-virtual {v11, v1}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v1

    check-cast v1, Lcom/alibaba/fastjson/annotation/JSONType;

    .line 50
    :cond_1d6
    array-length v1, v0

    new-array v1, v1, [Ljava/lang/String;

    const/4 v2, 0x0

    .line 51
    :goto_1da
    array-length v3, v0

    if-ge v2, v3, :cond_1e6

    .line 52
    aget-object v3, v0, v2

    iget-object v3, v3, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    aput-object v3, v1, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_1da

    :cond_1e6
    move-object/from16 v17, v1

    move-object/from16 v14, v22

    move-object/from16 v7, v29

    const/4 v8, 0x0

    goto/16 :goto_3d5

    :cond_1ef
    move-object/from16 v21, v5

    move-object/from16 v29, v7

    move-object/from16 v28, v8

    move-object/from16 v22, v10

    move-object v8, v4

    move-object v10, v6

    if-eqz v9, :cond_2b0

    .line 53
    invoke-static {v11, v9, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    .line 54
    invoke-virtual {v9}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v14

    .line 55
    array-length v0, v14

    if-lez v0, :cond_2ac

    if-eqz p6, :cond_20d

    .line 56
    invoke-virtual {v9}, Ljava/lang/reflect/Method;->getGenericParameterTypes()[Ljava/lang/reflect/Type;

    move-result-object v0

    move-object v12, v0

    goto :goto_20e

    :cond_20d
    move-object v12, v14

    .line 57
    :goto_20e
    invoke-virtual {v9}, Ljava/lang/reflect/Method;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;

    move-result-object v18

    const/4 v7, 0x0

    .line 58
    :goto_213
    array-length v0, v14

    if-ge v7, v0, :cond_273

    .line 59
    aget-object v0, v18, v7

    .line 60
    array-length v1, v0

    const/4 v2, 0x0

    :goto_21a
    if-ge v2, v1, :cond_229

    aget-object v3, v0, v2

    .line 61
    instance-of v4, v3, Lcom/alibaba/fastjson/annotation/JSONField;

    if-eqz v4, :cond_226

    .line 62
    move-object v0, v3

    check-cast v0, Lcom/alibaba/fastjson/annotation/JSONField;

    goto :goto_22b

    :cond_226
    add-int/lit8 v2, v2, 0x1

    goto :goto_21a

    :cond_229
    move-object/from16 v0, v16

    :goto_22b
    if-eqz v0, :cond_26d

    .line 63
    aget-object v3, v14, v7

    .line 64
    aget-object v4, v12, v7

    .line 65
    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    move-object/from16 v6, v22

    invoke-static {v11, v1, v10, v6}, Lcom/alibaba/fastjson/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;Ljava/util/Map;)Ljava/lang/reflect/Field;

    move-result-object v5

    .line 66
    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I

    move-result v19

    .line 67
    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;

    move-result-object v1

    invoke-static {v1}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I

    move-result v21

    .line 68
    new-instance v2, Lcom/alibaba/fastjson/util/FieldInfo;

    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    move-object v0, v2

    move-object/from16 p1, v12

    move-object v12, v2

    move-object/from16 v2, p0

    move-object/from16 v22, v14

    move-object v14, v6

    move/from16 v6, v19

    move/from16 v19, v7

    move/from16 v7, v21

    invoke-direct/range {v0 .. v7}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Field;II)V

    .line 69
    invoke-static {v15, v12, v13}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z

    add-int/lit8 v7, v19, 0x1

    move-object/from16 v12, p1

    move-object/from16 v35, v22

    move-object/from16 v22, v14

    move-object/from16 v14, v35

    goto :goto_213

    .line 70
    :cond_26d
    new-instance v0, Lcom/alibaba/fastjson/JSONException;

    invoke-direct {v0, v8}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 71
    :cond_273
    invoke-interface {v15}, Ljava/util/List;->size()I

    move-result v0

    new-array v5, v0, [Lcom/alibaba/fastjson/util/FieldInfo;

    .line 72
    invoke-interface {v15, v5}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    .line 73
    array-length v0, v5

    new-array v0, v0, [Lcom/alibaba/fastjson/util/FieldInfo;

    .line 74
    array-length v1, v5

    const/4 v2, 0x0

    invoke-static {v5, v2, v0, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 75
    invoke-static {v0}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V

    .line 76
    invoke-static {v5, v0}, Ljava/util/Arrays;->equals([Ljava/lang/Object;[Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_28f

    move-object v6, v5

    goto :goto_290

    :cond_28f
    move-object v6, v0

    :goto_290
    if-eqz p4, :cond_29c

    .line 77
    const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;

    invoke-virtual {v11, v0}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v0

    check-cast v0, Lcom/alibaba/fastjson/annotation/JSONType;

    move-object v7, v0

    goto :goto_29e

    :cond_29c
    move-object/from16 v7, v16

    .line 78
    :goto_29e
    new-instance v10, Lcom/alibaba/fastjson/parser/JavaBeanInfo;

    const/4 v2, 0x0

    const/4 v3, 0x0

    move-object v0, v10

    move-object/from16 v1, p0

    move-object v4, v9

    move-object/from16 v8, v17

    invoke-direct/range {v0 .. v8}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;-><init>(Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Method;[Lcom/alibaba/fastjson/util/FieldInfo;[Lcom/alibaba/fastjson/util/FieldInfo;Lcom/alibaba/fastjson/annotation/JSONType;[Ljava/lang/String;)V

    return-object v10

    :cond_2ac
    move-object/from16 v14, v22

    goto/16 :goto_3d2

    :cond_2b0
    move-object/from16 v14, v22

    if-nez v2, :cond_3d2

    const-string v2, "default constructor not found. "

    if-eqz v1, :cond_3bd

    .line 79
    array-length v1, v0

    if-lez v1, :cond_3bd

    .line 80
    invoke-static/range {p0 .. p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getKoltinConstructorParameters(Ljava/lang/Class;)[Ljava/lang/String;

    move-result-object v8

    if-eqz v8, :cond_3a8

    .line 81
    array-length v1, v0

    move-object/from16 v7, v21

    const/4 v2, 0x0

    :goto_2c5
    if-ge v2, v1, :cond_2f1

    aget-object v3, v0, v2

    .line 82
    invoke-virtual {v3}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v4

    .line 83
    array-length v5, v4

    if-lez v5, :cond_2e2

    array-length v5, v4

    const/4 v6, 0x1

    sub-int/2addr v5, v6

    aget-object v5, v4, v5

    .line 84
    invoke-virtual {v5}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v5

    const-string v6, "kotlin.jvm.internal.DefaultConstructorMarker"

    invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-eqz v5, :cond_2e2

    goto :goto_2ee

    :cond_2e2
    if-eqz v7, :cond_2ed

    .line 85
    invoke-virtual {v7}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v5

    array-length v5, v5

    array-length v4, v4

    if-lt v5, v4, :cond_2ed

    goto :goto_2ee

    :cond_2ed
    move-object v7, v3

    :goto_2ee
    add-int/lit8 v2, v2, 0x1

    goto :goto_2c5

    :cond_2f1
    const/4 v2, 0x1

    .line 86
    invoke-virtual {v7, v2}, Ljava/lang/reflect/Constructor;->setAccessible(Z)V

    .line 87
    invoke-static {v11, v7, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    .line 88
    invoke-virtual {v7}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v6

    if-eqz p6, :cond_305

    .line 89
    invoke-virtual {v7}, Ljava/lang/reflect/Constructor;->getGenericParameterTypes()[Ljava/lang/reflect/Type;

    move-result-object v0

    move-object/from16 v17, v0

    goto :goto_307

    :cond_305
    move-object/from16 v17, v6

    .line 90
    :goto_307
    invoke-virtual {v7}, Ljava/lang/reflect/Constructor;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;

    move-result-object v19

    const/4 v5, 0x0

    .line 91
    :goto_30c
    array-length v0, v6

    if-ge v5, v0, :cond_37f

    .line 92
    aget-object v0, v8, v5

    .line 93
    aget-object v1, v19, v5

    .line 94
    array-length v2, v1

    const/4 v3, 0x0

    :goto_315
    if-ge v3, v2, :cond_328

    aget-object v4, v1, v3

    move-object/from16 v21, v1

    .line 95
    instance-of v1, v4, Lcom/alibaba/fastjson/annotation/JSONField;

    if-eqz v1, :cond_323

    .line 96
    move-object v1, v4

    check-cast v1, Lcom/alibaba/fastjson/annotation/JSONField;

    goto :goto_32a

    :cond_323
    add-int/lit8 v3, v3, 0x1

    move-object/from16 v1, v21

    goto :goto_315

    :cond_328
    move-object/from16 v1, v16

    .line 97
    :goto_32a
    aget-object v3, v6, v5

    .line 98
    aget-object v4, v17, v5

    .line 99
    invoke-static {v11, v0, v10, v14}, Lcom/alibaba/fastjson/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;Ljava/util/Map;)Ljava/lang/reflect/Field;

    move-result-object v2

    if-eqz v2, :cond_33e

    if-nez v1, :cond_33e

    .line 100
    const-class v1, Lcom/alibaba/fastjson/annotation/JSONField;

    invoke-virtual {v2, v1}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v1

    check-cast v1, Lcom/alibaba/fastjson/annotation/JSONField;

    :cond_33e
    if-eqz v1, :cond_359

    .line 101
    invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I

    move-result v21

    .line 102
    invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;

    move-result-object v22

    invoke-static/range {v22 .. v22}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I

    move-result v22

    .line 103
    invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    .line 104
    invoke-virtual {v1}, Ljava/lang/String;->length()I

    move-result v23

    if-eqz v23, :cond_357

    move-object v0, v1

    :cond_357
    move-object v1, v0

    goto :goto_35e

    :cond_359
    move-object v1, v0

    const/16 v21, 0x0

    const/16 v22, 0x0

    .line 105
    :goto_35e
    new-instance v0, Lcom/alibaba/fastjson/util/FieldInfo;

    move-object/from16 v23, v0

    move-object/from16 v24, v2

    move-object/from16 v2, p0

    move/from16 v25, v5

    move-object/from16 v5, v24

    move-object/from16 v24, v6

    move/from16 v6, v21

    move-object/from16 v21, v7

    move/from16 v7, v22

    invoke-direct/range {v0 .. v7}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Field;II)V

    .line 106
    invoke-static {v15, v0, v13}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z

    add-int/lit8 v5, v25, 0x1

    move-object/from16 v7, v21

    move-object/from16 v6, v24

    goto :goto_30c

    :cond_37f
    move-object/from16 v21, v7

    .line 107
    invoke-interface {v15}, Ljava/util/List;->size()I

    move-result v0

    new-array v0, v0, [Lcom/alibaba/fastjson/util/FieldInfo;

    .line 108
    invoke-interface {v15, v0}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    .line 109
    array-length v1, v0

    new-array v1, v1, [Lcom/alibaba/fastjson/util/FieldInfo;

    .line 110
    array-length v2, v0

    const/4 v8, 0x0

    invoke-static {v0, v8, v1, v8, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 111
    invoke-static {v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V

    .line 112
    array-length v1, v0

    new-array v1, v1, [Ljava/lang/String;

    const/4 v2, 0x0

    .line 113
    :goto_399
    array-length v3, v0

    if-ge v2, v3, :cond_3a5

    .line 114
    aget-object v3, v0, v2

    iget-object v3, v3, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    aput-object v3, v1, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_399

    :cond_3a5
    move-object/from16 v17, v1

    goto :goto_3d3

    .line 115
    :cond_3a8
    new-instance v0, Lcom/alibaba/fastjson/JSONException;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 116
    :cond_3bd
    new-instance v0, Lcom/alibaba/fastjson/JSONException;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_3d2
    :goto_3d2
    const/4 v8, 0x0

    :goto_3d3
    move-object/from16 v7, v29

    :goto_3d5
    if-eqz v7, :cond_3da

    .line 117
    invoke-static {v11, v7, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    :cond_3da
    const/4 v5, 0x4

    if-nez v13, :cond_60a

    move-object/from16 v4, v28

    .line 118
    array-length v3, v4

    const/4 v2, 0x0

    :goto_3e1
    if-ge v2, v3, :cond_601

    aget-object v1, v4, v2

    .line 119
    invoke-virtual {v1}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;

    move-result-object v0

    .line 120
    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v6

    if-ge v6, v5, :cond_401

    :cond_3ef
    :goto_3ef
    move/from16 v28, v2

    move/from16 v29, v3

    move-object/from16 v30, v4

    move-object/from16 v20, v7

    move-object/from16 v19, v9

    move-object/from16 v27, v10

    move-object/from16 v26, v14

    :goto_3fd
    const/16 v25, 0x1

    goto/16 :goto_5ef

    .line 121
    :cond_401
    invoke-virtual {v1}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;

    move-result-object v6

    .line 122
    sget-object v5, Ljava/lang/Void;->TYPE:Ljava/lang/Class;

    if-eq v6, v5, :cond_40f

    invoke-virtual {v1}, Ljava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class;

    move-result-object v5

    if-ne v6, v5, :cond_3ef

    .line 123
    :cond_40f
    invoke-virtual {v1}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v5

    array-length v5, v5

    const/4 v6, 0x1

    if-eq v5, v6, :cond_418

    goto :goto_3ef

    :cond_418
    if-eqz p5, :cond_423

    .line 124
    const-class v5, Lcom/alibaba/fastjson/annotation/JSONField;

    invoke-virtual {v1, v5}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v5

    check-cast v5, Lcom/alibaba/fastjson/annotation/JSONField;

    goto :goto_425

    :cond_423
    move-object/from16 v5, v16

    :goto_425
    if-nez v5, :cond_42d

    if-eqz p5, :cond_42d

    .line 125
    invoke-static {v11, v1}, Lcom/alibaba/fastjson/util/TypeUtils;->getSupperMethodAnnotation(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lcom/alibaba/fastjson/annotation/JSONField;

    move-result-object v5

    :cond_42d
    move-object/from16 v18, v5

    if-eqz v18, :cond_49b

    .line 126
    invoke-interface/range {v18 .. v18}, Lcom/alibaba/fastjson/annotation/JSONField;->deserialize()Z

    move-result v5

    if-nez v5, :cond_438

    goto :goto_3ef

    .line 127
    :cond_438
    invoke-interface/range {v18 .. v18}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I

    move-result v22

    .line 128
    invoke-interface/range {v18 .. v18}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;

    move-result-object v5

    invoke-static {v5}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I

    move-result v23

    .line 129
    invoke-interface/range {v18 .. v18}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/String;->length()I

    move-result v5

    if-eqz v5, :cond_48c

    .line 130
    invoke-interface/range {v18 .. v18}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v5

    .line 131
    new-instance v0, Lcom/alibaba/fastjson/util/FieldInfo;

    const/16 v24, 0x0

    const/16 v25, 0x0

    move-object/from16 v26, v0

    move-object/from16 v27, v1

    move-object v1, v5

    move/from16 v28, v2

    move-object/from16 v2, v27

    move/from16 v29, v3

    move-object/from16 v3, v24

    move-object/from16 v24, v4

    move-object/from16 v4, p0

    move-object/from16 v5, p2

    const/16 v19, 0x1

    move/from16 v6, v22

    move-object/from16 v20, v7

    move/from16 v7, v23

    move-object/from16 v30, v24

    move-object/from16 v8, v18

    move-object/from16 v19, v9

    move-object/from16 v9, v25

    move-object/from16 v24, v14

    move-object v14, v10

    move/from16 v10, p6

    invoke-direct/range {v0 .. v10}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Z)V

    invoke-static {v15, v0, v13}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z

    move-object/from16 v10, v27

    .line 132
    invoke-static {v11, v10, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    goto :goto_4b5

    :cond_48c
    move/from16 v28, v2

    move/from16 v29, v3

    move-object/from16 v30, v4

    move-object/from16 v20, v7

    move-object/from16 v19, v9

    move-object/from16 v24, v14

    move-object v14, v10

    move-object v10, v1

    goto :goto_4ad

    :cond_49b
    move/from16 v28, v2

    move/from16 v29, v3

    move-object/from16 v30, v4

    move-object/from16 v20, v7

    move-object/from16 v19, v9

    move-object/from16 v24, v14

    move-object v14, v10

    move-object v10, v1

    const/16 v22, 0x0

    const/16 v23, 0x0

    :goto_4ad
    const-string v1, "set"

    .line 133
    invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v1

    if-nez v1, :cond_4bb

    :cond_4b5
    :goto_4b5
    move-object/from16 v27, v14

    move-object/from16 v26, v24

    goto/16 :goto_3fd

    :cond_4bb
    const/4 v9, 0x3

    .line 134
    invoke-virtual {v0, v9}, Ljava/lang/String;->charAt(I)C

    move-result v1

    .line 135
    invoke-static {v1}, Ljava/lang/Character;->isUpperCase(C)Z

    move-result v2

    if-eqz v2, :cond_4f3

    .line 136
    sget-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithJavaBean:Z

    if-eqz v1, :cond_4d6

    .line 137
    invoke-virtual {v0, v9}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    move-object/from16 v7, v24

    const/4 v8, 0x4

    goto :goto_522

    .line 138
    :cond_4d6
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v0, v9}, Ljava/lang/String;->charAt(I)C

    move-result v2

    invoke-static {v2}, Ljava/lang/Character;->toLowerCase(C)C

    move-result v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    const/4 v8, 0x4

    invoke-virtual {v0, v8}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    goto :goto_4fc

    :cond_4f3
    const/4 v8, 0x4

    const/16 v2, 0x5f

    if-ne v1, v2, :cond_4ff

    .line 139
    invoke-virtual {v0, v8}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v0

    :goto_4fc
    move-object/from16 v7, v24

    goto :goto_522

    :cond_4ff
    const/16 v2, 0x66

    if-ne v1, v2, :cond_508

    .line 140
    invoke-virtual {v0, v9}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v0

    goto :goto_4fc

    .line 141
    :cond_508
    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v1

    const/4 v2, 0x5

    if-lt v1, v2, :cond_4b5

    invoke-virtual {v0, v8}, Ljava/lang/String;->charAt(I)C

    move-result v1

    invoke-static {v1}, Ljava/lang/Character;->isUpperCase(C)Z

    move-result v1

    if-eqz v1, :cond_4b5

    .line 142
    invoke-virtual {v0, v9}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    goto :goto_4fc

    .line 143
    :goto_522
    invoke-static {v11, v0, v14, v7}, Lcom/alibaba/fastjson/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;Ljava/util/Map;)Ljava/lang/reflect/Field;

    move-result-object v1

    if-nez v1, :cond_55b

    .line 144
    invoke-virtual {v10}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v2

    const/4 v6, 0x0

    aget-object v2, v2, v6

    sget-object v3, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;

    if-ne v2, v3, :cond_559

    .line 145
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "is"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v6}, Ljava/lang/String;->charAt(I)C

    move-result v2

    invoke-static {v2}, Ljava/lang/Character;->toUpperCase(C)C

    move-result v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    const/4 v5, 0x1

    .line 146
    invoke-virtual {v0, v5}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    .line 147
    invoke-static {v11, v1, v14, v7}, Lcom/alibaba/fastjson/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;Ljava/util/Map;)Ljava/lang/reflect/Field;

    move-result-object v1

    goto :goto_55d

    :cond_559
    const/4 v5, 0x1

    goto :goto_55d

    :cond_55b
    const/4 v5, 0x1

    const/4 v6, 0x0

    :goto_55d
    move-object v3, v1

    if-eqz v3, :cond_5bd

    if-eqz p5, :cond_56d

    .line 148
    const-class v1, Lcom/alibaba/fastjson/annotation/JSONField;

    invoke-virtual {v3, v1}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v1

    check-cast v1, Lcom/alibaba/fastjson/annotation/JSONField;

    move-object/from16 v24, v1

    goto :goto_56f

    :cond_56d
    move-object/from16 v24, v16

    :goto_56f
    if-eqz v24, :cond_5bd

    .line 149
    invoke-interface/range {v24 .. v24}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I

    move-result v22

    .line 150
    invoke-interface/range {v24 .. v24}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;

    move-result-object v1

    invoke-static {v1}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I

    move-result v23

    .line 151
    invoke-interface/range {v24 .. v24}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/String;->length()I

    move-result v1

    if-eqz v1, :cond_5ac

    .line 152
    invoke-interface/range {v24 .. v24}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    .line 153
    new-instance v4, Lcom/alibaba/fastjson/util/FieldInfo;

    move-object v0, v4

    move-object v2, v10

    move-object v10, v4

    move-object/from16 v4, p0

    const/16 v25, 0x1

    move-object/from16 v5, p2

    move/from16 v6, v22

    move-object/from16 v26, v7

    move/from16 v7, v23

    move-object/from16 v8, v18

    move-object/from16 v9, v24

    move-object/from16 v27, v14

    move-object v14, v10

    move/from16 v10, p6

    invoke-direct/range {v0 .. v10}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Z)V

    invoke-static {v15, v14, v13}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z

    goto :goto_5ef

    :cond_5ac
    move-object/from16 v26, v7

    move-object/from16 v27, v14

    const/16 v25, 0x1

    if-nez v18, :cond_5c3

    move-object/from16 v14, p7

    move/from16 v6, v22

    move/from16 v7, v23

    move-object/from16 v8, v24

    goto :goto_5cb

    :cond_5bd
    move-object/from16 v26, v7

    move-object/from16 v27, v14

    const/16 v25, 0x1

    :cond_5c3
    move-object/from16 v14, p7

    move-object/from16 v8, v18

    move/from16 v6, v22

    move/from16 v7, v23

    :goto_5cb
    if-eqz v14, :cond_5d1

    .line 154
    invoke-virtual {v14, v0}, Lcom/alibaba/fastjson/PropertyNamingStrategy;->translate(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    :cond_5d1
    move-object v1, v0

    .line 155
    new-instance v9, Lcom/alibaba/fastjson/util/FieldInfo;

    const/4 v3, 0x0

    const/16 v18, 0x0

    move-object v0, v9

    move-object v2, v10

    move-object/from16 v4, p0

    move-object/from16 v5, p2

    move-object/from16 v31, v9

    move-object/from16 v9, v18

    move-object v14, v10

    move/from16 v10, p6

    invoke-direct/range {v0 .. v10}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Z)V

    move-object/from16 v0, v31

    invoke-static {v15, v0, v13}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z

    .line 156
    invoke-static {v11, v14, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    :goto_5ef
    add-int/lit8 v2, v28, 0x1

    move-object/from16 v9, v19

    move-object/from16 v7, v20

    move-object/from16 v14, v26

    move-object/from16 v10, v27

    move/from16 v3, v29

    move-object/from16 v4, v30

    const/4 v5, 0x4

    const/4 v8, 0x0

    goto/16 :goto_3e1

    :cond_601
    move-object/from16 v30, v4

    move-object/from16 v20, v7

    move-object/from16 v19, v9

    move-object/from16 v27, v10

    goto :goto_612

    :cond_60a
    move-object/from16 v20, v7

    move-object/from16 v19, v9

    move-object/from16 v27, v10

    move-object/from16 v30, v28

    :goto_612
    const/16 v25, 0x1

    .line 157
    new-instance v0, Ljava/util/ArrayList;

    move-object/from16 v1, v27

    array-length v2, v1

    invoke-direct {v0, v2}, Ljava/util/ArrayList;-><init>(I)V

    .line 158
    array-length v2, v1

    const/4 v3, 0x0

    :goto_61e
    if-ge v3, v2, :cond_658

    aget-object v4, v1, v3

    .line 159
    invoke-virtual {v4}, Ljava/lang/reflect/Field;->getModifiers()I

    move-result v5

    and-int/lit8 v6, v5, 0x8

    if-eqz v6, :cond_62b

    goto :goto_655

    :cond_62b
    and-int/lit8 v5, v5, 0x10

    if-eqz v5, :cond_64a

    .line 160
    invoke-virtual {v4}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;

    move-result-object v5

    .line 161
    const-class v6, Ljava/util/Map;

    invoke-virtual {v6, v5}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z

    move-result v6

    if-nez v6, :cond_646

    const-class v6, Ljava/util/Collection;

    invoke-virtual {v6, v5}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z

    move-result v5

    if-eqz v5, :cond_644

    goto :goto_646

    :cond_644
    const/4 v5, 0x0

    goto :goto_647

    :cond_646
    :goto_646
    const/4 v5, 0x1

    :goto_647
    if-nez v5, :cond_64a

    goto :goto_655

    .line 162
    :cond_64a
    invoke-virtual {v4}, Ljava/lang/reflect/Field;->getModifiers()I

    move-result v5

    and-int/lit8 v5, v5, 0x1

    if-eqz v5, :cond_655

    .line 163
    invoke-interface {v0, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    :cond_655
    :goto_655
    add-int/lit8 v3, v3, 0x1

    goto :goto_61e

    .line 164
    :cond_658
    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v1

    :goto_65c
    if-eqz v1, :cond_6a3

    const-class v2, Ljava/lang/Object;

    if-eq v1, v2, :cond_6a3

    .line 165
    invoke-virtual {v1}, Ljava/lang/Class;->getDeclaredFields()[Ljava/lang/reflect/Field;

    move-result-object v2

    array-length v3, v2

    const/4 v4, 0x0

    :goto_668
    if-ge v4, v3, :cond_69e

    aget-object v5, v2, v4

    .line 166
    invoke-virtual {v5}, Ljava/lang/reflect/Field;->getModifiers()I

    move-result v6

    and-int/lit8 v7, v6, 0x8

    if-eqz v7, :cond_675

    goto :goto_69b

    :cond_675
    and-int/lit8 v7, v6, 0x10

    if-eqz v7, :cond_694

    .line 167
    invoke-virtual {v5}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;

    move-result-object v7

    .line 168
    const-class v8, Ljava/util/Map;

    invoke-virtual {v8, v7}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z

    move-result v8

    if-nez v8, :cond_690

    const-class v8, Ljava/util/Collection;

    invoke-virtual {v8, v7}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z

    move-result v7

    if-eqz v7, :cond_68e

    goto :goto_690

    :cond_68e
    const/4 v7, 0x0

    goto :goto_691

    :cond_690
    :goto_690
    const/4 v7, 0x1

    :goto_691
    if-nez v7, :cond_694

    goto :goto_69b

    :cond_694
    and-int/lit8 v6, v6, 0x1

    if-eqz v6, :cond_69b

    .line 169
    invoke-interface {v0, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    :cond_69b
    :goto_69b
    add-int/lit8 v4, v4, 0x1

    goto :goto_668

    .line 170
    :cond_69e
    invoke-virtual {v1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v1

    goto :goto_65c

    .line 171
    :cond_6a3
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v14

    :goto_6a7
    invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_72c

    invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    move-object v3, v0

    check-cast v3, Ljava/lang/reflect/Field;

    .line 172
    invoke-virtual {v3}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;

    move-result-object v0

    .line 173
    invoke-interface {v15}, Ljava/util/List;->size()I

    move-result v1

    const/4 v2, 0x0

    const/4 v9, 0x0

    :goto_6be
    if-ge v2, v1, :cond_6d2

    .line 174
    invoke-interface {v15, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lcom/alibaba/fastjson/util/FieldInfo;

    .line 175
    iget-object v4, v4, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-eqz v4, :cond_6cf

    const/4 v9, 0x1

    :cond_6cf
    add-int/lit8 v2, v2, 0x1

    goto :goto_6be

    :cond_6d2
    if-eqz v9, :cond_6d5

    goto :goto_6a7

    :cond_6d5
    if-eqz p5, :cond_6e1

    .line 176
    const-class v1, Lcom/alibaba/fastjson/annotation/JSONField;

    invoke-virtual {v3, v1}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v1

    check-cast v1, Lcom/alibaba/fastjson/annotation/JSONField;

    move-object v9, v1

    goto :goto_6e3

    :cond_6e1
    move-object/from16 v9, v16

    :goto_6e3
    if-eqz v9, :cond_704

    .line 177
    invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I

    move-result v1

    .line 178
    invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;

    move-result-object v2

    invoke-static {v2}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I

    move-result v2

    .line 179
    invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v4}, Ljava/lang/String;->length()I

    move-result v4

    if-eqz v4, :cond_6ff

    .line 180
    invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v0

    :cond_6ff
    move-object/from16 v10, p7

    move v6, v1

    move v7, v2

    goto :goto_708

    :cond_704
    move-object/from16 v10, p7

    const/4 v6, 0x0

    const/4 v7, 0x0

    :goto_708
    if-eqz v10, :cond_70e

    .line 181
    invoke-virtual {v10, v0}, Lcom/alibaba/fastjson/PropertyNamingStrategy;->translate(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    :cond_70e
    move-object v1, v0

    .line 182
    invoke-static {v11, v3, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    .line 183
    new-instance v8, Lcom/alibaba/fastjson/util/FieldInfo;

    const/4 v2, 0x0

    const/16 v18, 0x0

    move-object v0, v8

    move-object/from16 v4, p0

    move-object/from16 v5, p2

    move-object/from16 v32, v8

    move-object/from16 v8, v18

    move/from16 v10, p6

    invoke-direct/range {v0 .. v10}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Z)V

    move-object/from16 v0, v32

    invoke-static {v15, v0, v13}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z

    goto/16 :goto_6a7

    :cond_72c
    if-nez v13, :cond_7ec

    move-object/from16 v14, v30

    .line 184
    array-length v10, v14

    const/4 v9, 0x0

    :goto_732
    if-ge v9, v10, :cond_7ec

    aget-object v8, v14, v9

    .line 185
    invoke-virtual {v8}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;

    move-result-object v0

    .line 186
    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v1

    const/4 v7, 0x4

    if-ge v1, v7, :cond_743

    goto/16 :goto_7de

    :cond_743
    const-string v1, "get"

    .line 187
    invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v1

    if-eqz v1, :cond_7de

    const/4 v6, 0x3

    invoke-virtual {v0, v6}, Ljava/lang/String;->charAt(I)C

    move-result v1

    invoke-static {v1}, Ljava/lang/Character;->isUpperCase(C)Z

    move-result v1

    if-eqz v1, :cond_7de

    .line 188
    invoke-virtual {v8}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v1

    array-length v1, v1

    if-eqz v1, :cond_75f

    goto/16 :goto_7de

    .line 189
    :cond_75f
    invoke-virtual {v8}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;

    move-result-object v1

    .line 190
    const-class v2, Ljava/util/Collection;

    invoke-virtual {v2, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z

    move-result v2

    if-nez v2, :cond_773

    const-class v2, Ljava/util/Map;

    .line 191
    invoke-virtual {v2, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z

    move-result v1

    if-eqz v1, :cond_7de

    :cond_773
    if-eqz p5, :cond_780

    .line 192
    const-class v1, Lcom/alibaba/fastjson/annotation/JSONField;

    invoke-virtual {v8, v1}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v1

    check-cast v1, Lcom/alibaba/fastjson/annotation/JSONField;

    move-object/from16 v18, v1

    goto :goto_782

    :cond_780
    move-object/from16 v18, v16

    :goto_782
    if-eqz v18, :cond_78f

    .line 193
    invoke-interface/range {v18 .. v18}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/String;->length()I

    move-result v2

    if-lez v2, :cond_78f

    goto :goto_7ab

    :cond_78f
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    .line 194
    invoke-virtual {v0, v6}, Ljava/lang/String;->charAt(I)C

    move-result v2

    invoke-static {v2}, Ljava/lang/Character;->toLowerCase(C)C

    move-result v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v7}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    move-object v1, v0

    .line 195
    :goto_7ab
    new-instance v5, Lcom/alibaba/fastjson/util/FieldInfo;

    const/4 v3, 0x0

    const/16 v22, 0x0

    const/16 v23, 0x0

    const/16 v24, 0x0

    move-object v0, v5

    move-object v2, v8

    move-object/from16 v4, p0

    move-object/from16 v33, v5

    move-object/from16 v5, p2

    const/16 v25, 0x3

    move/from16 v6, v22

    const/16 v22, 0x4

    move/from16 v7, v23

    move-object/from16 v34, v8

    move-object/from16 v8, v18

    move/from16 v18, v9

    move-object/from16 v9, v24

    move/from16 v23, v10

    move/from16 v10, p6

    invoke-direct/range {v0 .. v10}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Z)V

    move-object/from16 v0, v33

    invoke-static {v15, v0, v13}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->addField(Ljava/util/List;Lcom/alibaba/fastjson/util/FieldInfo;Z)Z

    move-object/from16 v0, v34

    .line 196
    invoke-static {v11, v0, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessible(Ljava/lang/Class;Ljava/lang/reflect/Member;I)Z

    goto :goto_7e6

    :cond_7de
    :goto_7de
    move/from16 v18, v9

    move/from16 v23, v10

    const/16 v22, 0x4

    const/16 v25, 0x3

    :goto_7e6
    add-int/lit8 v9, v18, 0x1

    move/from16 v10, v23

    goto/16 :goto_732

    .line 197
    :cond_7ec
    invoke-interface {v15}, Ljava/util/List;->size()I

    move-result v0

    new-array v5, v0, [Lcom/alibaba/fastjson/util/FieldInfo;

    .line 198
    invoke-interface {v15, v5}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    .line 199
    array-length v0, v5

    new-array v6, v0, [Lcom/alibaba/fastjson/util/FieldInfo;

    .line 200
    array-length v0, v5

    const/4 v1, 0x0

    invoke-static {v5, v1, v6, v1, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 201
    invoke-static {v6}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V

    if-eqz p4, :cond_80c

    .line 202
    const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;

    invoke-virtual {v11, v0}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v0

    check-cast v0, Lcom/alibaba/fastjson/annotation/JSONType;

    move-object v7, v0

    goto :goto_80e

    :cond_80c
    move-object/from16 v7, v16

    .line 203
    :goto_80e
    new-instance v9, Lcom/alibaba/fastjson/parser/JavaBeanInfo;

    move-object v0, v9

    move-object/from16 v1, p0

    move-object/from16 v2, v20

    move-object/from16 v3, v21

    move-object/from16 v4, v19

    move-object/from16 v8, v17

    invoke-direct/range {v0 .. v8}, Lcom/alibaba/fastjson/parser/JavaBeanInfo;-><init>(Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Method;[Lcom/alibaba/fastjson/util/FieldInfo;[Lcom/alibaba/fastjson/util/FieldInfo;Lcom/alibaba/fastjson/annotation/JSONType;[Ljava/lang/String;)V

    return-object v9
.end method

.method private computeSortedFields([Lcom/alibaba/fastjson/util/FieldInfo;[Lcom/alibaba/fastjson/util/FieldInfo;)[Lcom/alibaba/fastjson/util/FieldInfo;
    .registers 10

    .line 1
    iget-object v0, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->jsonType:Lcom/alibaba/fastjson/annotation/JSONType;

    if-nez v0, :cond_5

    return-object p2

    .line 2
    :cond_5
    invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONType;->orders()[Ljava/lang/String;

    move-result-object v0

    if-eqz v0, :cond_c2

    .line 3
    array-length v1, v0

    if-eqz v1, :cond_c2

    const/4 v1, 0x0

    const/4 v2, 0x0

    .line 4
    :goto_10
    array-length v3, v0

    const/4 v4, 0x1

    if-ge v2, v3, :cond_31

    const/4 v3, 0x0

    .line 5
    :goto_15
    array-length v5, p2

    if-ge v3, v5, :cond_29

    .line 6
    aget-object v5, p2, v3

    iget-object v5, v5, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    aget-object v6, v0, v2

    invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-eqz v5, :cond_26

    const/4 v3, 0x1

    goto :goto_2a

    :cond_26
    add-int/lit8 v3, v3, 0x1

    goto :goto_15

    :cond_29
    const/4 v3, 0x0

    :goto_2a
    if-nez v3, :cond_2e

    const/4 v2, 0x0

    goto :goto_32

    :cond_2e
    add-int/lit8 v2, v2, 0x1

    goto :goto_10

    :cond_31
    const/4 v2, 0x1

    :goto_32
    if-nez v2, :cond_35

    return-object p2

    .line 7
    :cond_35
    array-length v2, v0

    array-length p1, p1

    if-ne v2, p1, :cond_77

    const/4 p1, 0x0

    .line 8
    :goto_3a
    array-length v2, v0

    if-ge p1, v2, :cond_4e

    .line 9
    aget-object v2, p2, p1

    iget-object v2, v2, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    aget-object v3, v0, p1

    invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v2

    if-nez v2, :cond_4b

    const/4 p1, 0x0

    goto :goto_4f

    :cond_4b
    add-int/lit8 p1, p1, 0x1

    goto :goto_3a

    :cond_4e
    const/4 p1, 0x1

    :goto_4f
    if-eqz p1, :cond_52

    return-object p2

    .line 10
    :cond_52
    array-length p1, p2

    new-array p1, p1, [Lcom/alibaba/fastjson/util/FieldInfo;

    const/4 v2, 0x0

    .line 11
    :goto_56
    array-length v3, v0

    if-ge v2, v3, :cond_74

    const/4 v3, 0x0

    .line 12
    :goto_5a
    array-length v5, p2

    if-ge v3, v5, :cond_71

    .line 13
    aget-object v5, p2, v3

    iget-object v5, v5, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    aget-object v6, v0, v2

    invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-eqz v5, :cond_6e

    .line 14
    aget-object v3, p2, v3

    aput-object v3, p1, v2

    goto :goto_71

    :cond_6e
    add-int/lit8 v3, v3, 0x1

    goto :goto_5a

    :cond_71
    :goto_71
    add-int/lit8 v2, v2, 0x1

    goto :goto_56

    .line 15
    :cond_74
    iput-boolean v4, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->ordered:Z

    return-object p1

    .line 16
    :cond_77
    array-length p1, p2

    new-array p1, p1, [Lcom/alibaba/fastjson/util/FieldInfo;

    const/4 v2, 0x0

    .line 17
    :goto_7b
    array-length v3, v0

    if-ge v2, v3, :cond_99

    const/4 v3, 0x0

    .line 18
    :goto_7f
    array-length v5, p2

    if-ge v3, v5, :cond_96

    .line 19
    aget-object v5, p2, v3

    iget-object v5, v5, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;

    aget-object v6, v0, v2

    invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v5

    if-eqz v5, :cond_93

    .line 20
    aget-object v3, p2, v3

    aput-object v3, p1, v2

    goto :goto_96

    :cond_93
    add-int/lit8 v3, v3, 0x1

    goto :goto_7f

    :cond_96
    :goto_96
    add-int/lit8 v2, v2, 0x1

    goto :goto_7b

    .line 21
    :cond_99
    array-length v0, v0

    move v2, v0

    const/4 v0, 0x0

    .line 22
    :goto_9c
    array-length v3, p2

    if-ge v0, v3, :cond_c0

    const/4 v3, 0x0

    .line 23
    :goto_a0
    array-length v5, p1

    if-ge v3, v5, :cond_b4

    if-ge v3, v2, :cond_b4

    .line 24
    aget-object v5, p1, v0

    aget-object v6, p2, v3

    invoke-virtual {v5, v6}, Lcom/alibaba/fastjson/util/FieldInfo;->equals(Lcom/alibaba/fastjson/util/FieldInfo;)Z

    move-result v5

    if-eqz v5, :cond_b1

    const/4 v3, 0x1

    goto :goto_b5

    :cond_b1
    add-int/lit8 v3, v3, 0x1

    goto :goto_a0

    :cond_b4
    const/4 v3, 0x0

    :goto_b5
    if-nez v3, :cond_bd

    .line 25
    aget-object v3, p2, v0

    aput-object v3, p1, v2

    add-int/lit8 v2, v2, 0x1

    :cond_bd
    add-int/lit8 v0, v0, 0x1

    goto :goto_9c

    .line 26
    :cond_c0
    iput-boolean v4, p0, Lcom/alibaba/fastjson/parser/JavaBeanInfo;->ordered:Z

    :cond_c2
    return-object p2
.end method