JavaBeanInfo.smali

.class public Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;
.super Ljava/lang/Object;


# instance fields
.field public final buildMethod:Ljava/lang/reflect/Method;

.field public final builderClass:Ljava/lang/Class;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/lang/Class<",
            "*>;"
        }
    .end annotation
.end field

.field public final clazz:Ljava/lang/Class;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/lang/Class<",
            "*>;"
        }
    .end annotation
.end field

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

.field public creatorConstructorParameterTypes:[Ljava/lang/reflect/Type;

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

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

.field public final defaultConstructorParameterSize:I

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

.field public final fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

.field public final jsonType:Lcom/tradplus/ads/common/serialization/annotation/JSONType;

.field public kotlin:Z

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

.field public orders:[Ljava/lang/String;

.field public final parserFeatures:I

.field public final sortedFields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

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

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


# direct methods
.method public constructor <init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;Lcom/tradplus/ads/common/serialization/annotation/JSONType;Ljava/util/List;)V
    .registers 16
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;",
            "Ljava/lang/Class<",
            "*>;",
            "Ljava/lang/reflect/Constructor<",
            "*>;",
            "Ljava/lang/reflect/Constructor<",
            "*>;",
            "Ljava/lang/reflect/Method;",
            "Ljava/lang/reflect/Method;",
            "Lcom/tradplus/ads/common/serialization/annotation/JSONType;",
            "Ljava/util/List<",
            "Lcom/tradplus/ads/common/serialization/util/FieldInfo;",
            ">;)V"
        }
    .end annotation

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

    iput-object p1, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->clazz:Ljava/lang/Class;

    iput-object p2, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->builderClass:Ljava/lang/Class;

    iput-object p3, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->defaultConstructor:Ljava/lang/reflect/Constructor;

    iput-object p4, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->creatorConstructor:Ljava/lang/reflect/Constructor;

    iput-object p5, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->factoryMethod:Ljava/lang/reflect/Method;

    invoke-static {p1}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getParserFeatures(Ljava/lang/Class;)I

    move-result p2

    iput p2, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->parserFeatures:I

    iput-object p6, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->buildMethod:Ljava/lang/reflect/Method;

    iput-object p7, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->jsonType:Lcom/tradplus/ads/common/serialization/annotation/JSONType;

    const/4 p2, 0x0

    if-eqz p7, :cond_44

    invoke-interface {p7}, Lcom/tradplus/ads/common/serialization/annotation/JSONType;->typeName()Ljava/lang/String;

    move-result-object p6

    invoke-interface {p7}, Lcom/tradplus/ads/common/serialization/annotation/JSONType;->typeKey()Ljava/lang/String;

    move-result-object v0

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

    move-result v1

    if-lez v1, :cond_29

    goto :goto_2a

    :cond_29
    move-object v0, p2

    :goto_2a
    iput-object v0, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->typeKey:Ljava/lang/String;

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

    move-result v0

    if-eqz v0, :cond_33

    goto :goto_37

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

    move-result-object p6

    :goto_37
    iput-object p6, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->typeName:Ljava/lang/String;

    invoke-interface {p7}, Lcom/tradplus/ads/common/serialization/annotation/JSONType;->orders()[Ljava/lang/String;

    move-result-object p6

    array-length p7, p6

    if-nez p7, :cond_41

    move-object p6, p2

    :cond_41
    iput-object p6, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->orders:[Ljava/lang/String;

    goto :goto_4e

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

    move-result-object p6

    iput-object p6, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->typeName:Ljava/lang/String;

    iput-object p2, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->typeKey:Ljava/lang/String;

    iput-object p2, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->orders:[Ljava/lang/String;

    :goto_4e
    invoke-interface {p8}, Ljava/util/List;->size()I

    move-result p6

    new-array p6, p6, [Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    iput-object p6, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    iget-object p6, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    invoke-interface {p8, p6}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    iget-object p6, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    array-length p7, p6

    new-array p7, p7, [Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    iget-object v0, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->orders:[Ljava/lang/String;

    const/4 v1, 0x0

    if-eqz v0, :cond_b4

    new-instance p6, Ljava/util/LinkedHashMap;

    invoke-interface {p8}, Ljava/util/List;->size()I

    move-result p8

    invoke-direct {p6, p8}, Ljava/util/LinkedHashMap;-><init>(I)V

    iget-object p8, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    array-length v0, p8

    const/4 v2, 0x0

    :goto_72
    if-ge v2, v0, :cond_7e

    aget-object v3, p8, v2

    iget-object v4, v3, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->name:Ljava/lang/String;

    invoke-virtual {p6, v4, v3}, Ljava/util/LinkedHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    add-int/lit8 v2, v2, 0x1

    goto :goto_72

    :cond_7e
    iget-object p8, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->orders:[Ljava/lang/String;

    array-length v0, p8

    const/4 v2, 0x0

    const/4 v3, 0x0

    :goto_83
    if-ge v2, v0, :cond_9a

    aget-object v4, p8, v2

    invoke-virtual {p6, v4}, Ljava/util/LinkedHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    if-eqz v5, :cond_97

    add-int/lit8 v6, v3, 0x1

    aput-object v5, p7, v3

    invoke-virtual {p6, v4}, Ljava/util/LinkedHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move v3, v6

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

    goto :goto_83

    :cond_9a
    invoke-virtual {p6}, Ljava/util/LinkedHashMap;->values()Ljava/util/Collection;

    move-result-object p6

    invoke-interface {p6}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;

    move-result-object p6

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

    move-result p8

    if-eqz p8, :cond_bb

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

    move-result-object p8

    check-cast p8, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    add-int/lit8 v0, v3, 0x1

    aput-object p8, p7, v3

    move v3, v0

    goto :goto_a2

    :cond_b4
    array-length p8, p6

    invoke-static {p6, v1, p7, v1, p8}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    invoke-static {p7}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V

    :cond_bb
    iget-object p6, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    invoke-static {p6, p7}, Ljava/util/Arrays;->equals([Ljava/lang/Object;[Ljava/lang/Object;)Z

    move-result p6

    if-eqz p6, :cond_c5

    iget-object p7, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    :cond_c5
    iput-object p7, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->sortedFields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    if-eqz p3, :cond_d1

    invoke-virtual {p3}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object p3

    array-length p3, p3

    :goto_ce
    iput p3, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->defaultConstructorParameterSize:I

    goto :goto_db

    :cond_d1
    if-eqz p5, :cond_d9

    invoke-virtual {p5}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object p3

    array-length p3, p3

    goto :goto_ce

    :cond_d9
    iput v1, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->defaultConstructorParameterSize:I

    :goto_db
    if-eqz p4, :cond_155

    invoke-virtual {p4}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object p3

    iput-object p3, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->creatorConstructorParameterTypes:[Ljava/lang/reflect/Type;

    invoke-static {p1}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->isKotlin(Ljava/lang/Class;)Z

    move-result p3

    iput-boolean p3, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->kotlin:Z

    iget-boolean p3, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->kotlin:Z

    if-eqz p3, :cond_12f

    invoke-static {p1}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getKoltinConstructorParameters(Ljava/lang/Class;)[Ljava/lang/String;

    move-result-object p3

    iput-object p3, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->creatorConstructorParameters:[Ljava/lang/String;

    :try_start_f3
    new-array p3, v1, [Ljava/lang/Class;

    invoke-virtual {p1, p3}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;

    move-result-object p1

    iput-object p1, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->kotlinDefaultConstructor:Ljava/lang/reflect/Constructor;
    :try_end_fb
    .catch Ljava/lang/Throwable; {:try_start_f3 .. :try_end_fb} :catch_fb

    :catch_fb
    invoke-static {p4}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getParameterAnnotations(Ljava/lang/reflect/Constructor;)[[Ljava/lang/annotation/Annotation;

    move-result-object p1

    const/4 p3, 0x0

    :goto_100
    iget-object p4, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->creatorConstructorParameters:[Ljava/lang/String;

    array-length p4, p4

    if-ge p3, p4, :cond_155

    array-length p4, p1

    if-ge p3, p4, :cond_155

    aget-object p4, p1, p3

    array-length p5, p4

    const/4 p6, 0x0

    :goto_10c
    if-ge p6, p5, :cond_11b

    aget-object p7, p4, p6

    instance-of p8, p7, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz p8, :cond_118

    move-object p4, p7

    check-cast p4, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    goto :goto_11c

    :cond_118
    add-int/lit8 p6, p6, 0x1

    goto :goto_10c

    :cond_11b
    move-object p4, p2

    :goto_11c
    if-eqz p4, :cond_12c

    invoke-interface {p4}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object p4

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

    move-result p5

    if-lez p5, :cond_12c

    iget-object p5, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->creatorConstructorParameters:[Ljava/lang/String;

    aput-object p4, p5, p3

    :cond_12c
    add-int/lit8 p3, p3, 0x1

    goto :goto_100

    :cond_12f
    iget-object p1, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->creatorConstructorParameterTypes:[Ljava/lang/reflect/Type;

    array-length p1, p1

    iget-object p2, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    array-length p2, p2

    if-eq p1, p2, :cond_138

    goto :goto_14d

    :cond_138
    const/4 p1, 0x0

    :goto_139
    iget-object p2, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->creatorConstructorParameterTypes:[Ljava/lang/reflect/Type;

    array-length p3, p2

    if-ge p1, p3, :cond_14c

    aget-object p2, p2, p1

    iget-object p3, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->fields:[Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    aget-object p3, p3, p1

    iget-object p3, p3, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->fieldClass:Ljava/lang/Class;

    if-eq p2, p3, :cond_149

    goto :goto_14d

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

    goto :goto_139

    :cond_14c
    const/4 v1, 0x1

    :goto_14d
    if-nez v1, :cond_155

    invoke-static {p4}, Lcom/tradplus/ads/common/serialization/util/ASMUtils;->lookupParameterNames(Ljava/lang/reflect/AccessibleObject;)[Ljava/lang/String;

    move-result-object p1

    iput-object p1, p0, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->creatorConstructorParameters:[Ljava/lang/String;

    :cond_155
    return-void
.end method

.method private static a(Ljava/util/List;Ljava/lang/String;)Lcom/tradplus/ads/common/serialization/util/FieldInfo;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List<",
            "Lcom/tradplus/ads/common/serialization/util/FieldInfo;",
            ">;",
            "Ljava/lang/String;",
            ")",
            "Lcom/tradplus/ads/common/serialization/util/FieldInfo;"
        }
    .end annotation

    invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object p0

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

    move-result v0

    if-eqz v0, :cond_2e

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

    move-result-object v0

    check-cast v0, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    iget-object v1, v0, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->name:Ljava/lang/String;

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

    move-result v1

    if-eqz v1, :cond_19

    return-object v0

    :cond_19
    iget-object v1, v0, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->field:Ljava/lang/reflect/Field;

    if-eqz v1, :cond_4

    invoke-virtual {v0}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->getAnnotation()Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    move-result-object v2

    if-eqz v2, :cond_4

    invoke-virtual {v1}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;

    move-result-object v1

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

    move-result v1

    if-eqz v1, :cond_4

    return-object v0

    :cond_2e
    const/4 p0, 0x0

    return-object p0
.end method

.method static a(Ljava/lang/Class;[Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
    .registers 10
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;[",
            "Ljava/lang/reflect/Constructor<",
            "*>;)",
            "Ljava/lang/reflect/Constructor<",
            "*>;"
        }
    .end annotation

    invoke-virtual {p0}, Ljava/lang/Class;->getModifiers()I

    move-result v0

    invoke-static {v0}, Ljava/lang/reflect/Modifier;->isAbstract(I)Z

    move-result v0

    const/4 v1, 0x0

    if-eqz v0, :cond_c

    return-object v1

    :cond_c
    array-length v0, p1

    const/4 v2, 0x0

    const/4 v3, 0x0

    :goto_f
    if-ge v3, v0, :cond_1f

    aget-object v4, p1, v3

    invoke-virtual {v4}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v5

    array-length v5, v5

    if-nez v5, :cond_1c

    move-object v1, v4

    goto :goto_1f

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

    goto :goto_f

    :cond_1f
    :goto_1f
    if-nez v1, :cond_50

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

    move-result v0

    if-eqz v0, :cond_50

    invoke-virtual {p0}, Ljava/lang/Class;->getModifiers()I

    move-result v0

    invoke-static {v0}, Ljava/lang/reflect/Modifier;->isStatic(I)Z

    move-result v0

    if-nez v0, :cond_50

    array-length v0, p1

    const/4 v3, 0x0

    :goto_33
    if-ge v3, v0, :cond_50

    aget-object v4, p1, v3

    invoke-virtual {v4}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v5

    array-length v6, v5

    const/4 v7, 0x1

    if-ne v6, v7, :cond_4d

    aget-object v5, v5, v2

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

    move-result-object v6

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

    move-result v5

    if-eqz v5, :cond_4d

    move-object v1, v4

    goto :goto_50

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

    goto :goto_33

    :cond_50
    :goto_50
    return-object v1
.end method

.method private static a(Ljava/lang/Class;[Ljava/lang/reflect/Method;Z)Ljava/lang/reflect/Method;
    .registers 9
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;[",
            "Ljava/lang/reflect/Method;",
            "Z)",
            "Ljava/lang/reflect/Method;"
        }
    .end annotation

    array-length v0, p1

    const/4 v1, 0x0

    const/4 v2, 0x0

    move-object v3, v2

    const/4 v2, 0x0

    :goto_5
    if-ge v2, v0, :cond_38

    aget-object v4, p1, v2

    invoke-virtual {v4}, Ljava/lang/reflect/Method;->getModifiers()I

    move-result v5

    invoke-static {v5}, Ljava/lang/reflect/Modifier;->isStatic(I)Z

    move-result v5

    if-nez v5, :cond_14

    goto :goto_35

    :cond_14
    invoke-virtual {v4}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;

    move-result-object v5

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

    move-result v5

    if-nez v5, :cond_1f

    goto :goto_35

    :cond_1f
    const-class v5, Lcom/tradplus/ads/common/serialization/annotation/JSONCreator;

    invoke-static {v4, v5}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v5

    check-cast v5, Lcom/tradplus/ads/common/serialization/annotation/JSONCreator;

    if-eqz v5, :cond_35

    if-nez v3, :cond_2d

    move-object v3, v4

    goto :goto_35

    :cond_2d
    new-instance p0, Lcom/tradplus/ads/common/serialization/JSONException;

    const-string p1, "multi-JSONCreator"

    invoke-direct {p0, p1}, Lcom/tradplus/ads/common/serialization/JSONException;-><init>(Ljava/lang/String;)V

    throw p0

    :cond_35
    :goto_35
    add-int/lit8 v2, v2, 0x1

    goto :goto_5

    :cond_38
    if-nez v3, :cond_4b

    if-eqz p2, :cond_4b

    array-length p0, p1

    :goto_3d
    if-ge v1, p0, :cond_4b

    aget-object p2, p1, v1

    invoke-static {p2}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->isJacksonCreator(Ljava/lang/reflect/Method;)Z

    move-result v0

    if-eqz v0, :cond_48

    goto :goto_4c

    :cond_48
    add-int/lit8 v1, v1, 0x1

    goto :goto_3d

    :cond_4b
    move-object p2, v3

    :goto_4c
    return-object p2
.end method

.method private static a(Ljava/lang/Class;)Ljava/util/Map;
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;)",
            "Ljava/util/Map<",
            "Ljava/lang/reflect/TypeVariable;",
            "Ljava/lang/reflect/Type;",
            ">;"
        }
    .end annotation

    invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v0

    const/4 v1, 0x0

    if-nez v0, :cond_8

    return-object v1

    :cond_8
    :goto_8
    move-object v6, v0

    move-object v0, p0

    move-object p0, v6

    if-eqz p0, :cond_57

    const-class v2, Ljava/lang/Object;

    if-eq p0, v2, :cond_57

    invoke-virtual {v0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;

    move-result-object v2

    instance-of v2, v2, Ljava/lang/reflect/ParameterizedType;

    if-eqz v2, :cond_52

    invoke-virtual {v0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;

    move-result-object v0

    check-cast v0, Ljava/lang/reflect/ParameterizedType;

    invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;

    move-result-object v0

    invoke-virtual {p0}, Ljava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable;

    move-result-object v2

    const/4 v3, 0x0

    :goto_28
    array-length v4, v0

    if-ge v3, v4, :cond_52

    if-nez v1, :cond_32

    new-instance v1, Ljava/util/HashMap;

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

    :cond_32
    aget-object v4, v0, v3

    invoke-interface {v1, v4}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v4

    if-eqz v4, :cond_48

    aget-object v4, v0, v3

    invoke-interface {v1, v4}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/lang/reflect/Type;

    aget-object v5, v2, v3

    invoke-interface {v1, v5, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_4f

    :cond_48
    aget-object v4, v2, v3

    aget-object v5, v0, v3

    invoke-interface {v1, v4, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

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

    goto :goto_28

    :cond_52
    invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v0

    goto :goto_8

    :cond_57
    return-object v1
.end method

.method private static a(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;Ljava/util/List;[Ljava/lang/reflect/Field;)V
    .registers 25
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;",
            "Ljava/lang/reflect/Type;",
            "Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;",
            "Ljava/util/List<",
            "Lcom/tradplus/ads/common/serialization/util/FieldInfo;",
            ">;[",
            "Ljava/lang/reflect/Field;",
            ")V"
        }
    .end annotation

    move-object/from16 v0, p2

    move-object/from16 v1, p4

    invoke-static/range {p0 .. p0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/lang/Class;)Ljava/util/Map;

    move-result-object v15

    array-length v14, v1

    const/16 v16, 0x0

    const/4 v13, 0x0

    :goto_c
    if-ge v13, v14, :cond_e6

    aget-object v5, v1, v13

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

    move-result v2

    and-int/lit8 v3, v2, 0x8

    if-eqz v3, :cond_20

    :goto_18
    move-object/from16 v2, p3

    move/from16 v17, v13

    move/from16 v18, v14

    goto/16 :goto_e0

    :cond_20
    and-int/lit8 v2, v2, 0x10

    const/4 v3, 0x1

    if-eqz v2, :cond_58

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

    move-result-object v2

    const-class v4, Ljava/util/Map;

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

    move-result v4

    if-nez v4, :cond_54

    const-class v4, Ljava/util/Collection;

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

    move-result v4

    if-nez v4, :cond_54

    const-class v4, Ljava/util/concurrent/atomic/AtomicLong;

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

    move-result v4

    if-nez v4, :cond_54

    const-class v4, Ljava/util/concurrent/atomic/AtomicInteger;

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

    move-result v4

    if-nez v4, :cond_54

    const-class v4, Ljava/util/concurrent/atomic/AtomicBoolean;

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

    move-result v2

    if-eqz v2, :cond_52

    goto :goto_54

    :cond_52
    const/4 v2, 0x0

    goto :goto_55

    :cond_54
    :goto_54
    const/4 v2, 0x1

    :goto_55
    if-nez v2, :cond_58

    goto :goto_18

    :cond_58
    invoke-interface/range {p3 .. p3}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

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

    move-result v4

    if-eqz v4, :cond_75

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

    move-result-object v4

    check-cast v4, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    iget-object v4, v4, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->name:Ljava/lang/String;

    invoke-virtual {v5}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;

    move-result-object v6

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

    move-result v4

    if-eqz v4, :cond_5c

    goto :goto_76

    :cond_75
    const/4 v3, 0x0

    :goto_76
    if-eqz v3, :cond_79

    goto :goto_18

    :cond_79
    invoke-virtual {v5}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;

    move-result-object v2

    const-class v3, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    invoke-static {v5, v3}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v3

    move-object v12, v3

    check-cast v12, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v12, :cond_b5

    invoke-interface {v12}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->deserialize()Z

    move-result v3

    if-nez v3, :cond_8f

    goto :goto_18

    :cond_8f
    invoke-interface {v12}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->ordinal()I

    move-result v3

    invoke-interface {v12}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->serialzeFeatures()[Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;

    move-result-object v4

    invoke-static {v4}, Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;->of([Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;)I

    move-result v4

    invoke-interface {v12}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->parseFeatures()[Lcom/tradplus/ads/common/serialization/parser/Feature;

    move-result-object v6

    invoke-static {v6}, Lcom/tradplus/ads/common/serialization/parser/Feature;->of([Lcom/tradplus/ads/common/serialization/parser/Feature;)I

    move-result v6

    invoke-interface {v12}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v7

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

    move-result v7

    if-eqz v7, :cond_b1

    invoke-interface {v12}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v2

    :cond_b1
    move v8, v3

    move v9, v4

    move v10, v6

    goto :goto_b8

    :cond_b5
    const/4 v8, 0x0

    const/4 v9, 0x0

    const/4 v10, 0x0

    :goto_b8
    if-eqz v0, :cond_be

    invoke-virtual {v0, v2}, Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;->translate(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v2

    :cond_be
    move-object v3, v2

    new-instance v11, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/4 v4, 0x0

    const/16 v17, 0x0

    const/16 v18, 0x0

    move-object v2, v11

    move-object/from16 v6, p0

    move-object/from16 v7, p1

    move-object/from16 v19, v11

    move-object/from16 v11, v17

    move/from16 v17, v13

    move-object/from16 v13, v18

    move/from16 v18, v14

    move-object v14, v15

    invoke-direct/range {v2 .. v14}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/tradplus/ads/common/serialization/annotation/JSONField;Lcom/tradplus/ads/common/serialization/annotation/JSONField;Ljava/lang/String;Ljava/util/Map;)V

    move-object/from16 v2, p3

    move-object/from16 v3, v19

    invoke-static {v2, v3}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    :goto_e0
    add-int/lit8 v13, v17, 0x1

    move/from16 v14, v18

    goto/16 :goto_c

    :cond_e6
    return-void
.end method

.method static a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List<",
            "Lcom/tradplus/ads/common/serialization/util/FieldInfo;",
            ">;",
            "Lcom/tradplus/ads/common/serialization/util/FieldInfo;",
            ")Z"
        }
    .end annotation

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

    move-result v0

    const/4 v1, 0x1

    sub-int/2addr v0, v1

    :goto_6
    if-ltz v0, :cond_3e

    invoke-interface {p0, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    iget-object v3, v2, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->name:Ljava/lang/String;

    iget-object v4, p1, Lcom/tradplus/ads/common/serialization/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_3b

    iget-boolean v3, v2, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->getOnly:Z

    if-eqz v3, :cond_21

    iget-boolean v3, p1, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->getOnly:Z

    if-nez v3, :cond_21

    goto :goto_3b

    :cond_21
    iget-object v3, v2, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->fieldClass:Ljava/lang/Class;

    iget-object v4, p1, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->fieldClass:Ljava/lang/Class;

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

    move-result v3

    if-eqz v3, :cond_2f

    invoke-interface {p0, v0, p1}, Ljava/util/List;->set(ILjava/lang/Object;)Ljava/lang/Object;

    return v1

    :cond_2f
    invoke-virtual {v2, p1}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;->compareTo(Lcom/tradplus/ads/common/serialization/util/FieldInfo;)I

    move-result v2

    if-gez v2, :cond_39

    invoke-interface {p0, v0, p1}, Ljava/util/List;->set(ILjava/lang/Object;)Ljava/lang/Object;

    return v1

    :cond_39
    const/4 p0, 0x0

    return p0

    :cond_3b
    :goto_3b
    add-int/lit8 v0, v0, -0x1

    goto :goto_6

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

    return v1
.end method

.method public static build(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;)Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;
    .registers 9
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;",
            "Ljava/lang/reflect/Type;",
            "Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;",
            ")",
            "Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;"
        }
    .end annotation

    sget-boolean v4, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->compatibleWithJavaBean:Z

    const/4 v3, 0x0

    const/4 v5, 0x0

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    invoke-static/range {v0 .. v5}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->build(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;ZZZ)Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;

    move-result-object p0

    return-object p0
.end method

.method public static build(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;ZZ)Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;
    .registers 11
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;",
            "Ljava/lang/reflect/Type;",
            "Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;",
            "ZZ)",
            "Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;"
        }
    .end annotation

    const/4 v5, 0x0

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    move v3, p3

    move v4, p4

    invoke-static/range {v0 .. v5}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->build(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;ZZZ)Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;

    move-result-object p0

    return-object p0
.end method

.method public static build(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;ZZZ)Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;
    .registers 51
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;",
            "Ljava/lang/reflect/Type;",
            "Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;",
            "ZZZ)",
            "Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;"
        }
    .end annotation

    move-object/from16 v13, p0

    move-object/from16 v14, p1

    move/from16 v9, p5

    const-class v0, Lcom/tradplus/ads/common/serialization/annotation/JSONType;

    invoke-static {v13, v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v0

    move-object v15, v0

    check-cast v15, Lcom/tradplus/ads/common/serialization/annotation/JSONType;

    if-eqz v15, :cond_1d

    invoke-interface {v15}, Lcom/tradplus/ads/common/serialization/annotation/JSONType;->naming()Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;

    move-result-object v0

    if-eqz v0, :cond_1d

    sget-object v1, Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;->CamelCase:Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;

    if-eq v0, v1, :cond_1d

    move-object v12, v0

    goto :goto_1f

    :cond_1d
    move-object/from16 v12, p2

    :goto_1f
    invoke-static {v13, v15}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->getBuilderClass(Ljava/lang/Class;Lcom/tradplus/ads/common/serialization/annotation/JSONType;)Ljava/lang/Class;

    move-result-object v11

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

    move-result-object v10

    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;

    move-result-object v8

    invoke-static/range {p0 .. p0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/lang/Class;)Ljava/util/Map;

    move-result-object v16

    invoke-static/range {p0 .. p0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->isKotlin(Ljava/lang/Class;)Z

    move-result v17

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

    move-result-object v0

    const/16 v18, 0x0

    const/4 v7, 0x1

    if-eqz v17, :cond_43

    array-length v1, v0

    if-ne v1, v7, :cond_40

    goto :goto_43

    :cond_40
    move-object/from16 v19, v18

    goto :goto_54

    :cond_43
    :goto_43
    if-nez v11, :cond_4a

    invoke-static {v13, v0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/lang/Class;[Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;

    move-result-object v1

    goto :goto_52

    :cond_4a
    invoke-virtual {v11}, Ljava/lang/Class;->getDeclaredConstructors()[Ljava/lang/reflect/Constructor;

    move-result-object v1

    invoke-static {v11, v1}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/lang/Class;[Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;

    move-result-object v1

    :goto_52
    move-object/from16 v19, v1

    :goto_54
    const/16 v20, 0x0

    const/16 v21, 0x0

    new-instance v6, Ljava/util/ArrayList;

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

    if-eqz p3, :cond_86

    move-object v0, v13

    :goto_60
    if-eqz v0, :cond_6e

    invoke-virtual {v0}, Ljava/lang/Class;->getDeclaredFields()[Ljava/lang/reflect/Field;

    move-result-object v1

    invoke-static {v13, v14, v12, v6, v1}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;Ljava/util/List;[Ljava/lang/reflect/Field;)V

    invoke-virtual {v0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v0

    goto :goto_60

    :cond_6e
    if-eqz v19, :cond_73

    invoke-static/range {v19 .. v19}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->a(Ljava/lang/reflect/AccessibleObject;)V

    :cond_73
    new-instance v9, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;

    const/4 v4, 0x0

    move-object v0, v9

    move-object/from16 v1, p0

    move-object v2, v11

    move-object/from16 v3, v19

    move-object/from16 v5, v21

    move-object v8, v6

    move-object/from16 v6, v20

    move-object v7, v15

    invoke-direct/range {v0 .. v8}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;Lcom/tradplus/ads/common/serialization/annotation/JSONType;Ljava/util/List;)V

    return-object v9

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

    move-result v1

    if-nez v1, :cond_99

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

    move-result v1

    invoke-static {v1}, Ljava/lang/reflect/Modifier;->isAbstract(I)Z

    move-result v1

    if-eqz v1, :cond_97

    goto :goto_99

    :cond_97
    const/4 v1, 0x0

    goto :goto_9a

    :cond_99
    :goto_99
    const/4 v1, 0x1

    :goto_9a
    if-nez v19, :cond_9e

    if-eqz v11, :cond_a0

    :cond_9e
    if-eqz v1, :cond_3fb

    :cond_a0
    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->getCreatorConstructor([Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;

    move-result-object v22

    if-eqz v22, :cond_174

    if-nez v1, :cond_174

    invoke-static/range {v22 .. v22}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->a(Ljava/lang/reflect/AccessibleObject;)V

    invoke-virtual/range {v22 .. v22}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v9

    array-length v0, v9

    if-lez v0, :cond_16c

    invoke-static/range {v22 .. v22}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getParameterAnnotations(Ljava/lang/reflect/Constructor;)[[Ljava/lang/annotation/Annotation;

    move-result-object v2

    move-object/from16 v0, v18

    const/4 v1, 0x0

    :goto_b9
    array-length v3, v9

    if-ge v1, v3, :cond_16c

    array-length v3, v2

    if-ge v1, v3, :cond_16c

    aget-object v3, v2, v1

    array-length v4, v3

    const/4 v5, 0x0

    :goto_c3
    if-ge v5, v4, :cond_d7

    aget-object v7, v3, v5

    move-object/from16 p5, v2

    instance-of v2, v7, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v2, :cond_d1

    move-object v2, v7

    check-cast v2, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    goto :goto_db

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

    move-object/from16 v2, p5

    const/4 v7, 0x1

    goto :goto_c3

    :cond_d7
    move-object/from16 p5, v2

    move-object/from16 v2, v18

    :goto_db
    aget-object v3, v9, v1

    invoke-virtual/range {v22 .. v22}, Ljava/lang/reflect/Constructor;->getGenericParameterTypes()[Ljava/lang/reflect/Type;

    move-result-object v4

    aget-object v4, v4, v1

    if-eqz v2, :cond_106

    invoke-interface {v2}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v5

    invoke-static {v13, v5, v10}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v5

    invoke-interface {v2}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->ordinal()I

    move-result v7

    invoke-interface {v2}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->serialzeFeatures()[Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;

    move-result-object v25

    invoke-static/range {v25 .. v25}, Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;->of([Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;)I

    move-result v25

    invoke-interface {v2}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->parseFeatures()[Lcom/tradplus/ads/common/serialization/parser/Feature;

    move-result-object v26

    invoke-static/range {v26 .. v26}, Lcom/tradplus/ads/common/serialization/parser/Feature;->of([Lcom/tradplus/ads/common/serialization/parser/Feature;)I

    move-result v26

    invoke-interface {v2}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v2

    goto :goto_10e

    :cond_106
    move-object/from16 v2, v18

    move-object v5, v2

    const/4 v7, 0x0

    const/16 v25, 0x0

    const/16 v26, 0x0

    :goto_10e
    if-eqz v2, :cond_116

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

    move-result v27

    if-nez v27, :cond_11e

    :cond_116
    if-nez v0, :cond_11c

    invoke-static/range {v22 .. v22}, Lcom/tradplus/ads/common/serialization/util/ASMUtils;->lookupParameterNames(Ljava/lang/reflect/AccessibleObject;)[Ljava/lang/String;

    move-result-object v0

    :cond_11c
    aget-object v2, v0, v1

    :cond_11e
    if-nez v5, :cond_13c

    if-nez v0, :cond_12d

    if-eqz v17, :cond_129

    invoke-static/range {p0 .. p0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getKoltinConstructorParameters(Ljava/lang/Class;)[Ljava/lang/String;

    move-result-object v0

    goto :goto_12d

    :cond_129
    invoke-static/range {v22 .. v22}, Lcom/tradplus/ads/common/serialization/util/ASMUtils;->lookupParameterNames(Ljava/lang/reflect/AccessibleObject;)[Ljava/lang/String;

    move-result-object v0

    :cond_12d
    :goto_12d
    move-object/from16 v27, v5

    array-length v5, v0

    if-le v5, v1, :cond_139

    aget-object v5, v0, v1

    invoke-static {v13, v5, v10}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v5

    goto :goto_13e

    :cond_139
    move-object/from16 v5, v27

    goto :goto_13e

    :cond_13c
    move-object/from16 v27, v5

    :goto_13e
    move-object/from16 v27, v0

    new-instance v0, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    move-object/from16 v28, v0

    move/from16 v29, v1

    move-object v1, v2

    move-object/from16 v30, p5

    move-object/from16 v2, p0

    const/4 v14, 0x3

    const/4 v14, 0x2

    move-object v14, v6

    move v6, v7

    move-object/from16 v23, v12

    const/4 v12, 0x1

    move/from16 v7, v25

    move-object v12, v8

    move/from16 v8, v26

    invoke-direct/range {v0 .. v8}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Field;III)V

    invoke-static {v14, v0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    add-int/lit8 v1, v29, 0x1

    move-object v8, v12

    move-object v6, v14

    move-object/from16 v12, v23

    move-object/from16 v0, v27

    move-object/from16 v2, v30

    const/4 v7, 0x1

    move-object/from16 v14, p1

    goto/16 :goto_b9

    :cond_16c
    move-object v14, v6

    move-object/from16 v23, v12

    move-object v12, v8

    :cond_170
    const/16 v24, 0x1

    goto/16 :goto_403

    :cond_174
    move-object v14, v6

    move-object/from16 v23, v12

    move-object v12, v8

    invoke-static {v13, v12, v9}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/lang/Class;[Ljava/lang/reflect/Method;Z)Ljava/lang/reflect/Method;

    move-result-object v21

    if-eqz v21, :cond_233

    invoke-static/range {v21 .. v21}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->a(Ljava/lang/reflect/AccessibleObject;)V

    invoke-virtual/range {v21 .. v21}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v8

    array-length v0, v8

    if-lez v0, :cond_170

    invoke-static/range {v21 .. v21}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getParameterAnnotations(Ljava/lang/reflect/Method;)[[Ljava/lang/annotation/Annotation;

    move-result-object v12

    move-object/from16 v0, v18

    const/4 v7, 0x0

    :goto_18f
    array-length v1, v8

    if-ge v7, v1, :cond_222

    aget-object v1, v12, v7

    array-length v2, v1

    const/4 v3, 0x0

    :goto_196
    if-ge v3, v2, :cond_1a5

    aget-object v4, v1, v3

    instance-of v5, v4, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v5, :cond_1a2

    move-object v1, v4

    check-cast v1, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    goto :goto_1a7

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

    goto :goto_196

    :cond_1a5
    move-object/from16 v1, v18

    :goto_1a7
    if-nez v1, :cond_1ba

    if-eqz v9, :cond_1b2

    invoke-static/range {v21 .. v21}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->isJacksonCreator(Ljava/lang/reflect/Method;)Z

    move-result v2

    if-eqz v2, :cond_1b2

    goto :goto_1ba

    :cond_1b2
    new-instance v0, Lcom/tradplus/ads/common/serialization/JSONException;

    const-string v1, "illegal json creator"

    invoke-direct {v0, v1}, Lcom/tradplus/ads/common/serialization/JSONException;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_1ba
    :goto_1ba
    if-eqz v1, :cond_1da

    invoke-interface {v1}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v2

    invoke-interface {v1}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->ordinal()I

    move-result v3

    invoke-interface {v1}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->serialzeFeatures()[Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;

    move-result-object v4

    invoke-static {v4}, Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;->of([Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;)I

    move-result v4

    invoke-interface {v1}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->parseFeatures()[Lcom/tradplus/ads/common/serialization/parser/Feature;

    move-result-object v1

    invoke-static {v1}, Lcom/tradplus/ads/common/serialization/parser/Feature;->of([Lcom/tradplus/ads/common/serialization/parser/Feature;)I

    move-result v1

    move/from16 v17, v1

    move v6, v3

    move/from16 v16, v4

    goto :goto_1e1

    :cond_1da
    move-object/from16 v2, v18

    const/4 v6, 0x0

    const/16 v16, 0x0

    const/16 v17, 0x0

    :goto_1e1
    if-eqz v2, :cond_1ee

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

    move-result v1

    if-nez v1, :cond_1ea

    goto :goto_1ee

    :cond_1ea
    move-object/from16 v19, v0

    move-object v1, v2

    goto :goto_1f8

    :cond_1ee
    :goto_1ee
    if-nez v0, :cond_1f4

    invoke-static/range {v21 .. v21}, Lcom/tradplus/ads/common/serialization/util/ASMUtils;->lookupParameterNames(Ljava/lang/reflect/AccessibleObject;)[Ljava/lang/String;

    move-result-object v0

    :cond_1f4
    aget-object v1, v0, v7

    move-object/from16 v19, v0

    :goto_1f8
    aget-object v3, v8, v7

    invoke-virtual/range {v21 .. v21}, Ljava/lang/reflect/Method;->getGenericParameterTypes()[Ljava/lang/reflect/Type;

    move-result-object v0

    aget-object v4, v0, v7

    invoke-static {v13, v1, v10}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v5

    new-instance v2, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    move-object v0, v2

    move-object v9, v2

    move-object/from16 v2, p0

    move/from16 v20, v7

    move/from16 v7, v16

    move-object/from16 v16, v8

    move/from16 v8, v17

    invoke-direct/range {v0 .. v8}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Field;III)V

    invoke-static {v14, v9}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    add-int/lit8 v7, v20, 0x1

    move/from16 v9, p5

    move-object/from16 v8, v16

    move-object/from16 v0, v19

    goto/16 :goto_18f

    :cond_222
    new-instance v9, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;

    const/4 v3, 0x0

    const/4 v4, 0x0

    const/4 v6, 0x0

    move-object v0, v9

    move-object/from16 v1, p0

    move-object v2, v11

    move-object/from16 v5, v21

    move-object v7, v15

    move-object v8, v14

    invoke-direct/range {v0 .. v8}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;Lcom/tradplus/ads/common/serialization/annotation/JSONType;Ljava/util/List;)V

    return-object v9

    :cond_233
    if-nez v1, :cond_170

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

    move-result-object v9

    if-eqz v17, :cond_251

    array-length v1, v0

    if-lez v1, :cond_251

    invoke-static/range {p0 .. p0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getKoltinConstructorParameters(Ljava/lang/Class;)[Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getKotlinConstructor([Ljava/lang/reflect/Constructor;[Ljava/lang/String;)Ljava/lang/reflect/Constructor;

    move-result-object v0

    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->a(Ljava/lang/reflect/AccessibleObject;)V

    move-object/from16 v22, v0

    move-object v7, v1

    :goto_24c
    const/4 v8, 0x1

    const/16 v24, 0x0

    goto/16 :goto_308

    :cond_251
    array-length v1, v0

    move-object/from16 v3, v18

    const/4 v2, 0x0

    :goto_255
    if-ge v2, v1, :cond_304

    aget-object v4, v0, v2

    invoke-virtual {v4}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v5

    const-string v6, "org.springframework.security.web.authentication.WebAuthenticationDetails"

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

    move-result v6

    if-eqz v6, :cond_287

    array-length v6, v5

    const/4 v7, 0x2

    if-ne v6, v7, :cond_282

    const/4 v8, 0x0

    aget-object v6, v5, v8

    const-class v7, Ljava/lang/String;

    if-ne v6, v7, :cond_282

    const/4 v6, 0x1

    aget-object v5, v5, v6

    const-class v7, Ljava/lang/String;

    if-ne v5, v7, :cond_282

    invoke-virtual {v4, v6}, Ljava/lang/reflect/Constructor;->setAccessible(Z)V

    invoke-static {v4}, Lcom/tradplus/ads/common/serialization/util/ASMUtils;->lookupParameterNames(Ljava/lang/reflect/AccessibleObject;)[Ljava/lang/String;

    move-result-object v1

    :goto_27e
    move-object v7, v1

    move-object/from16 v22, v4

    goto :goto_24c

    :cond_282
    const/4 v8, 0x1

    :cond_283
    const/16 v24, 0x0

    goto/16 :goto_300

    :cond_287
    const/4 v8, 0x0

    const-string v6, "org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken"

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

    move-result v6

    if-eqz v6, :cond_2bc

    array-length v6, v5

    const/4 v7, 0x3

    if-ne v6, v7, :cond_282

    aget-object v6, v5, v8

    const-class v8, Ljava/lang/Object;

    if-ne v6, v8, :cond_282

    const/4 v6, 0x1

    aget-object v8, v5, v6

    const-class v7, Ljava/lang/Object;

    if-ne v8, v7, :cond_282

    const/4 v7, 0x2

    aget-object v5, v5, v7

    const-class v8, Ljava/util/Collection;

    if-ne v5, v8, :cond_282

    invoke-virtual {v4, v6}, Ljava/lang/reflect/Constructor;->setAccessible(Z)V

    const/4 v0, 0x3

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

    const-string v0, "principal"

    const/4 v2, 0x0

    aput-object v0, v1, v2

    const-string v0, "credentials"

    aput-object v0, v1, v6

    const-string v0, "authorities"

    aput-object v0, v1, v7

    goto :goto_27e

    :cond_2bc
    const-string v6, "org.springframework.security.core.authority.SimpleGrantedAuthority"

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

    move-result v6

    if-eqz v6, :cond_2da

    array-length v6, v5

    const/4 v8, 0x1

    if-ne v6, v8, :cond_283

    const/16 v24, 0x0

    aget-object v5, v5, v24

    const-class v6, Ljava/lang/String;

    if-ne v5, v6, :cond_300

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

    const-string v0, "authority"

    aput-object v0, v1, v24

    move-object v7, v1

    move-object/from16 v22, v4

    goto :goto_308

    :cond_2da
    const/4 v8, 0x1

    const/16 v24, 0x0

    invoke-virtual {v4}, Ljava/lang/reflect/Constructor;->getModifiers()I

    move-result v5

    and-int/2addr v5, v8

    if-eqz v5, :cond_2e6

    const/4 v5, 0x1

    goto :goto_2e7

    :cond_2e6
    const/4 v5, 0x0

    :goto_2e7
    if-nez v5, :cond_2ea

    goto :goto_300

    :cond_2ea
    invoke-static {v4}, Lcom/tradplus/ads/common/serialization/util/ASMUtils;->lookupParameterNames(Ljava/lang/reflect/AccessibleObject;)[Ljava/lang/String;

    move-result-object v5

    if-eqz v5, :cond_300

    array-length v6, v5

    if-nez v6, :cond_2f4

    goto :goto_300

    :cond_2f4
    if-eqz v22, :cond_2fd

    if-eqz v3, :cond_2fd

    array-length v6, v5

    array-length v7, v3

    if-gt v6, v7, :cond_2fd

    goto :goto_300

    :cond_2fd
    move-object/from16 v22, v4

    move-object v3, v5

    :cond_300
    :goto_300
    add-int/lit8 v2, v2, 0x1

    goto/16 :goto_255

    :cond_304
    const/4 v8, 0x1

    const/16 v24, 0x0

    move-object v7, v3

    :goto_308
    if-eqz v7, :cond_310

    invoke-virtual/range {v22 .. v22}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v0

    move-object v6, v0

    goto :goto_312

    :cond_310
    move-object/from16 v6, v18

    :goto_312
    if-eqz v7, :cond_3e4

    array-length v0, v6

    array-length v1, v7

    if-ne v0, v1, :cond_3e4

    invoke-static/range {v22 .. v22}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getParameterAnnotations(Ljava/lang/reflect/Constructor;)[[Ljava/lang/annotation/Annotation;

    move-result-object v25

    const/4 v5, 0x0

    :goto_31d
    array-length v0, v6

    if-ge v5, v0, :cond_3c3

    aget-object v0, v25, v5

    aget-object v1, v7, v5

    array-length v2, v0

    const/4 v3, 0x0

    :goto_326
    if-ge v3, v2, :cond_336

    aget-object v4, v0, v3

    instance-of v8, v4, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v8, :cond_332

    move-object v0, v4

    check-cast v0, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    goto :goto_338

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

    const/4 v8, 0x1

    goto :goto_326

    :cond_336
    move-object/from16 v0, v18

    :goto_338
    aget-object v3, v6, v5

    invoke-virtual/range {v22 .. v22}, Ljava/lang/reflect/Constructor;->getGenericParameterTypes()[Ljava/lang/reflect/Type;

    move-result-object v2

    aget-object v4, v2, v5

    invoke-static {v13, v1, v10}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v8

    if-eqz v8, :cond_350

    if-nez v0, :cond_350

    const-class v0, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    invoke-static {v8, v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v0

    check-cast v0, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    :cond_350
    if-nez v0, :cond_374

    const-string v0, "org.springframework.security.core.userdetails.User"

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

    move-result v0

    if-eqz v0, :cond_36d

    const-string v0, "password"

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

    move-result v0

    if-eqz v0, :cond_36d

    sget-object v0, Lcom/tradplus/ads/common/serialization/parser/Feature;->InitStringFieldAsEmpty:Lcom/tradplus/ads/common/serialization/parser/Feature;

    iget v0, v0, Lcom/tradplus/ads/common/serialization/parser/Feature;->mask:I

    move/from16 v29, v0

    const/16 v27, 0x0

    const/16 v28, 0x0

    goto :goto_399

    :cond_36d
    const/16 v27, 0x0

    const/16 v28, 0x0

    const/16 v29, 0x0

    goto :goto_399

    :cond_374
    invoke-interface {v0}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v2

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

    move-result v27

    if-eqz v27, :cond_37f

    move-object v1, v2

    :cond_37f
    invoke-interface {v0}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->ordinal()I

    move-result v2

    invoke-interface {v0}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->serialzeFeatures()[Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;

    move-result-object v27

    invoke-static/range {v27 .. v27}, Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;->of([Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;)I

    move-result v27

    invoke-interface {v0}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->parseFeatures()[Lcom/tradplus/ads/common/serialization/parser/Feature;

    move-result-object v0

    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/parser/Feature;->of([Lcom/tradplus/ads/common/serialization/parser/Feature;)I

    move-result v0

    move/from16 v29, v0

    move/from16 v28, v27

    move/from16 v27, v2

    :goto_399
    new-instance v2, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    move-object v0, v2

    move-object/from16 p5, v9

    move-object v9, v2

    move-object/from16 v2, p0

    move/from16 v30, v5

    move-object v5, v8

    move-object/from16 v31, v6

    move/from16 v6, v27

    move-object/from16 v27, v7

    move/from16 v7, v28

    const/16 v24, 0x1

    move/from16 v8, v29

    invoke-direct/range {v0 .. v8}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Field;III)V

    invoke-static {v14, v9}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    add-int/lit8 v5, v30, 0x1

    move-object/from16 v9, p5

    move-object/from16 v7, v27

    move-object/from16 v6, v31

    const/4 v8, 0x1

    const/16 v24, 0x0

    goto/16 :goto_31d

    :cond_3c3
    const/16 v24, 0x1

    if-nez v17, :cond_403

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

    move-result-object v0

    const-string v1, "javax.servlet.http.Cookie"

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

    move-result v0

    if-nez v0, :cond_403

    new-instance v9, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;

    const/4 v3, 0x0

    const/4 v5, 0x0

    const/4 v6, 0x0

    move-object v0, v9

    move-object/from16 v1, p0

    move-object v2, v11

    move-object/from16 v4, v22

    move-object v7, v15

    move-object v8, v14

    invoke-direct/range {v0 .. v8}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;Lcom/tradplus/ads/common/serialization/annotation/JSONType;Ljava/util/List;)V

    return-object v9

    :cond_3e4
    new-instance v0, Lcom/tradplus/ads/common/serialization/JSONException;

    new-instance v1, Ljava/lang/StringBuilder;

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

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

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

    invoke-virtual {v1, v13}, 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/tradplus/ads/common/serialization/JSONException;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_3fb
    move-object v14, v6

    move-object/from16 v23, v12

    const/16 v24, 0x1

    move-object v12, v8

    move-object/from16 v22, v18

    :cond_403
    :goto_403
    if-eqz v19, :cond_408

    invoke-static/range {v19 .. v19}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->a(Ljava/lang/reflect/AccessibleObject;)V

    :cond_408
    const-string v9, "set"

    if-eqz v11, :cond_5ed

    const-class v0, Lcom/tradplus/ads/common/serialization/annotation/JSONPOJOBuilder;

    invoke-static {v11, v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v0

    check-cast v0, Lcom/tradplus/ads/common/serialization/annotation/JSONPOJOBuilder;

    if-eqz v0, :cond_41b

    invoke-interface {v0}, Lcom/tradplus/ads/common/serialization/annotation/JSONPOJOBuilder;->withPrefix()Ljava/lang/String;

    move-result-object v0

    goto :goto_41d

    :cond_41b
    move-object/from16 v0, v18

    :goto_41d
    if-nez v0, :cond_421

    const-string v0, "with"

    :cond_421
    move-object v8, v0

    invoke-virtual {v11}, Ljava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;

    move-result-object v7

    array-length v6, v7

    const/4 v5, 0x0

    :goto_428
    if-ge v5, v6, :cond_5a7

    aget-object v2, v7, v5

    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getModifiers()I

    move-result v0

    invoke-static {v0}, Ljava/lang/reflect/Modifier;->isStatic(I)Z

    move-result v0

    if-eqz v0, :cond_44b

    :goto_436
    move/from16 v31, v5

    move/from16 v34, v6

    move-object/from16 v35, v7

    move-object/from16 v40, v9

    move-object/from16 v37, v10

    move-object/from16 v38, v11

    move-object/from16 v29, v15

    move-object/from16 v39, v23

    move-object/from16 v23, v8

    move-object v15, v12

    goto/16 :goto_58e

    :cond_44b
    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;

    move-result-object v0

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

    move-result v0

    if-nez v0, :cond_456

    goto :goto_436

    :cond_456
    const-class v0, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    invoke-static {v2, v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v0

    check-cast v0, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-nez v0, :cond_464

    invoke-static {v13, v2}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getSuperMethodAnnotation(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    move-result-object v0

    :cond_464
    move-object/from16 v25, v0

    if-eqz v25, :cond_4ea

    invoke-interface/range {v25 .. v25}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->deserialize()Z

    move-result v0

    if-nez v0, :cond_46f

    goto :goto_436

    :cond_46f
    invoke-interface/range {v25 .. v25}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->ordinal()I

    move-result v26

    invoke-interface/range {v25 .. v25}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->serialzeFeatures()[Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;

    move-result-object v0

    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;->of([Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;)I

    move-result v27

    invoke-interface/range {v25 .. v25}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->parseFeatures()[Lcom/tradplus/ads/common/serialization/parser/Feature;

    move-result-object v0

    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/parser/Feature;->of([Lcom/tradplus/ads/common/serialization/parser/Feature;)I

    move-result v28

    invoke-interface/range {v25 .. v25}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v0

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

    move-result v0

    if-eqz v0, :cond_4cf

    invoke-interface/range {v25 .. v25}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    new-instance v4, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/4 v3, 0x0

    const/16 v29, 0x0

    const/16 v30, 0x0

    move-object v0, v4

    move-object/from16 v33, v4

    move-object/from16 v4, p0

    move/from16 v31, v5

    move-object/from16 v5, p1

    move/from16 v34, v6

    move/from16 v6, v26

    move-object/from16 v35, v7

    move/from16 v7, v27

    move-object/from16 p5, v8

    move/from16 v8, v28

    move-object/from16 v36, v9

    move-object/from16 v9, v25

    move-object/from16 v37, v10

    move-object/from16 v10, v29

    move-object/from16 v38, v11

    move-object/from16 v11, v30

    move-object/from16 v29, v15

    move-object/from16 v39, v23

    const/4 v13, 0x1

    move-object v15, v12

    move-object/from16 v12, v16

    invoke-direct/range {v0 .. v12}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/tradplus/ads/common/serialization/annotation/JSONField;Lcom/tradplus/ads/common/serialization/annotation/JSONField;Ljava/lang/String;Ljava/util/Map;)V

    move-object/from16 v0, v33

    invoke-static {v14, v0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    move-object/from16 v23, p5

    move-object/from16 v40, v36

    goto/16 :goto_58e

    :cond_4cf
    move/from16 v31, v5

    move/from16 v34, v6

    move-object/from16 v35, v7

    move-object/from16 p5, v8

    move-object/from16 v36, v9

    move-object/from16 v37, v10

    move-object/from16 v38, v11

    move-object/from16 v29, v15

    move-object/from16 v39, v23

    const/4 v13, 0x1

    move-object v15, v12

    move/from16 v6, v26

    move/from16 v7, v27

    move/from16 v8, v28

    goto :goto_501

    :cond_4ea
    move/from16 v31, v5

    move/from16 v34, v6

    move-object/from16 v35, v7

    move-object/from16 p5, v8

    move-object/from16 v36, v9

    move-object/from16 v37, v10

    move-object/from16 v38, v11

    move-object/from16 v29, v15

    move-object/from16 v39, v23

    const/4 v13, 0x1

    move-object v15, v12

    const/4 v6, 0x0

    const/4 v7, 0x0

    const/4 v8, 0x0

    :goto_501
    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;

    move-result-object v0

    move-object/from16 v12, v36

    invoke-virtual {v0, v12}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v1

    if-eqz v1, :cond_51e

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

    move-result v1

    const/4 v3, 0x3

    if-le v1, v3, :cond_51e

    new-instance v1, Ljava/lang/StringBuilder;

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

    move-result-object v0

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

    goto :goto_529

    :cond_51e
    invoke-virtual/range {p5 .. p5}, Ljava/lang/String;->length()I

    move-result v1

    if-nez v1, :cond_52d

    new-instance v1, Ljava/lang/StringBuilder;

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

    :goto_529
    move-object/from16 v11, p5

    :goto_52b
    const/4 v10, 0x0

    goto :goto_553

    :cond_52d
    move-object/from16 v11, p5

    invoke-virtual {v0, v11}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v1

    if-nez v1, :cond_53a

    :goto_535
    move-object/from16 v23, v11

    move-object/from16 v40, v12

    goto :goto_58e

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

    move-result v1

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

    move-result v3

    if-gt v1, v3, :cond_545

    goto :goto_535

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

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

    move-result v3

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

    move-result-object v0

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

    goto :goto_52b

    :goto_553
    invoke-virtual {v1, v10}, Ljava/lang/StringBuilder;->charAt(I)C

    move-result v0

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

    move-result v3

    if-eqz v3, :cond_564

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

    move-result v3

    if-nez v3, :cond_564

    goto :goto_535

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

    move-result v0

    invoke-virtual {v1, v10, v0}, Ljava/lang/StringBuilder;->setCharAt(IC)V

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

    move-result-object v1

    new-instance v9, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/4 v3, 0x0

    const/16 v23, 0x0

    const/16 v24, 0x0

    move-object v0, v9

    move-object/from16 v4, p0

    move-object/from16 v5, p1

    move-object v13, v9

    move-object/from16 v9, v25

    move-object/from16 v10, v23

    move-object/from16 v23, v11

    move-object/from16 v11, v24

    move-object/from16 v40, v12

    move-object/from16 v12, v16

    invoke-direct/range {v0 .. v12}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/tradplus/ads/common/serialization/annotation/JSONField;Lcom/tradplus/ads/common/serialization/annotation/JSONField;Ljava/lang/String;Ljava/util/Map;)V

    invoke-static {v14, v13}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    :goto_58e
    add-int/lit8 v5, v31, 0x1

    move-object/from16 v13, p0

    move-object v12, v15

    move-object/from16 v8, v23

    move-object/from16 v15, v29

    move/from16 v6, v34

    move-object/from16 v7, v35

    move-object/from16 v10, v37

    move-object/from16 v11, v38

    move-object/from16 v23, v39

    move-object/from16 v9, v40

    const/16 v24, 0x1

    goto/16 :goto_428

    :cond_5a7
    move-object/from16 v40, v9

    move-object/from16 v37, v10

    move-object v13, v11

    move-object/from16 v29, v15

    move-object/from16 v39, v23

    move-object v15, v12

    if-eqz v13, :cond_5f7

    const-class v0, Lcom/tradplus/ads/common/serialization/annotation/JSONPOJOBuilder;

    invoke-static {v13, v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v0

    check-cast v0, Lcom/tradplus/ads/common/serialization/annotation/JSONPOJOBuilder;

    if-eqz v0, :cond_5c2

    invoke-interface {v0}, Lcom/tradplus/ads/common/serialization/annotation/JSONPOJOBuilder;->buildMethod()Ljava/lang/String;

    move-result-object v0

    goto :goto_5c4

    :cond_5c2
    move-object/from16 v0, v18

    :goto_5c4
    if-eqz v0, :cond_5cc

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

    move-result v1

    if-nez v1, :cond_5ce

    :cond_5cc
    const-string v0, "build"

    :cond_5ce
    const/4 v12, 0x0

    :try_start_5cf
    new-array v1, v12, [Ljava/lang/Class;

    invoke-virtual {v13, v0, v1}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;

    move-result-object v20
    :try_end_5d5
    .catch Ljava/lang/NoSuchMethodException; {:try_start_5cf .. :try_end_5d5} :catch_5d5
    .catch Ljava/lang/SecurityException; {:try_start_5cf .. :try_end_5d5} :catch_5d5

    :catch_5d5
    if-nez v20, :cond_5df

    :try_start_5d7
    const-string v0, "create"

    new-array v1, v12, [Ljava/lang/Class;

    invoke-virtual {v13, v0, v1}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;

    move-result-object v20
    :try_end_5df
    .catch Ljava/lang/NoSuchMethodException; {:try_start_5d7 .. :try_end_5df} :catch_5df
    .catch Ljava/lang/SecurityException; {:try_start_5d7 .. :try_end_5df} :catch_5df

    :catch_5df
    :cond_5df
    if-eqz v20, :cond_5e5

    invoke-static/range {v20 .. v20}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->a(Ljava/lang/reflect/AccessibleObject;)V

    goto :goto_5f8

    :cond_5e5
    new-instance v0, Lcom/tradplus/ads/common/serialization/JSONException;

    const-string v1, "buildMethod not found."

    invoke-direct {v0, v1}, Lcom/tradplus/ads/common/serialization/JSONException;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_5ed
    move-object/from16 v40, v9

    move-object/from16 v37, v10

    move-object v13, v11

    move-object/from16 v29, v15

    move-object/from16 v39, v23

    move-object v15, v12

    :cond_5f7
    const/4 v12, 0x0

    :goto_5f8
    array-length v11, v15

    const/4 v10, 0x0

    :goto_5fa
    const-string v9, "get"

    const/4 v8, 0x4

    if-ge v10, v11, :cond_92b

    aget-object v2, v15, v10

    const/4 v6, 0x0

    const/4 v7, 0x0

    const/16 v23, 0x0

    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getModifiers()I

    move-result v1

    invoke-static {v1}, Ljava/lang/reflect/Modifier;->isStatic(I)Z

    move-result v1

    if-eqz v1, :cond_629

    :cond_613
    :goto_613
    move/from16 v30, v10

    move/from16 v25, v11

    move-object/from16 v38, v13

    move-object/from16 v32, v15

    move-object/from16 v13, v39

    move-object/from16 v26, v40

    const/16 v27, 0x0

    const/16 v28, 0x2

    :goto_623
    const/16 v31, 0x1

    const/16 v33, 0x3

    goto/16 :goto_91c

    :cond_629
    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;

    move-result-object v1

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

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

    move-result v3

    if-nez v3, :cond_640

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

    move-result-object v3

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

    move-result v1

    if-nez v1, :cond_640

    goto :goto_613

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

    move-result-object v1

    const-class v3, Ljava/lang/Object;

    if-ne v1, v3, :cond_649

    goto :goto_613

    :cond_649
    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v1

    array-length v3, v1

    if-eqz v3, :cond_613

    array-length v3, v1

    const/4 v5, 0x2

    if-le v3, v5, :cond_655

    goto :goto_613

    :cond_655
    const-class v3, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    invoke-static {v2, v3}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v3

    move-object/from16 v24, v3

    check-cast v24, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v24, :cond_69a

    array-length v3, v1

    if-ne v3, v5, :cond_69a

    aget-object v3, v1, v12

    const-class v4, Ljava/lang/String;

    if-ne v3, v4, :cond_69a

    const/4 v3, 0x1

    aget-object v4, v1, v3

    const-class v3, Ljava/lang/Object;

    if-ne v4, v3, :cond_69a

    new-instance v9, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/4 v3, 0x0

    const/16 v25, 0x0

    const/16 v27, 0x0

    const-string v1, ""

    move-object v0, v9

    move-object/from16 v4, p0

    const/16 v28, 0x2

    move-object/from16 v5, p1

    move/from16 v8, v23

    move-object/from16 v41, v9

    move-object/from16 v9, v24

    move/from16 v30, v10

    move-object/from16 v10, v25

    move/from16 v25, v11

    move-object/from16 v11, v27

    move-object/from16 v12, v16

    invoke-direct/range {v0 .. v12}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/tradplus/ads/common/serialization/annotation/JSONField;Lcom/tradplus/ads/common/serialization/annotation/JSONField;Ljava/lang/String;Ljava/util/Map;)V

    move-object/from16 v0, v41

    :goto_696
    invoke-static {v14, v0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    goto :goto_6a4

    :cond_69a
    move/from16 v30, v10

    move/from16 v25, v11

    const/16 v28, 0x2

    array-length v3, v1

    const/4 v4, 0x1

    if-eq v3, v4, :cond_6b0

    :goto_6a4
    move-object/from16 v38, v13

    move-object/from16 v32, v15

    move-object/from16 v13, v39

    move-object/from16 v26, v40

    :goto_6ac
    const/16 v27, 0x0

    goto/16 :goto_623

    :cond_6b0
    if-nez v24, :cond_6bc

    const/4 v11, 0x1

    move-object/from16 v12, p0

    invoke-static {v12, v2}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getSuperMethodAnnotation(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    move-result-object v3

    move-object/from16 v24, v3

    goto :goto_6bf

    :cond_6bc
    const/4 v11, 0x1

    move-object/from16 v12, p0

    :goto_6bf
    if-nez v24, :cond_6c8

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

    move-result v3

    if-ge v3, v8, :cond_6c8

    goto :goto_6a4

    :cond_6c8
    if-eqz v24, :cond_711

    invoke-interface/range {v24 .. v24}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->deserialize()Z

    move-result v3

    if-nez v3, :cond_6d1

    goto :goto_6a4

    :cond_6d1
    invoke-interface/range {v24 .. v24}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->ordinal()I

    move-result v6

    invoke-interface/range {v24 .. v24}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->serialzeFeatures()[Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;

    move-result-object v3

    invoke-static {v3}, Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;->of([Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;)I

    move-result v7

    invoke-interface/range {v24 .. v24}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->parseFeatures()[Lcom/tradplus/ads/common/serialization/parser/Feature;

    move-result-object v3

    invoke-static {v3}, Lcom/tradplus/ads/common/serialization/parser/Feature;->of([Lcom/tradplus/ads/common/serialization/parser/Feature;)I

    move-result v10

    invoke-interface/range {v24 .. v24}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v3

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

    move-result v3

    if-eqz v3, :cond_712

    invoke-interface/range {v24 .. v24}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    new-instance v9, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/4 v3, 0x0

    const/16 v23, 0x0

    const/16 v26, 0x0

    move-object v0, v9

    move-object/from16 v4, p0

    move-object/from16 v5, p1

    move v8, v10

    move-object v10, v9

    move-object/from16 v9, v24

    move-object/from16 v42, v10

    move-object/from16 v10, v23

    move-object/from16 v11, v26

    move-object/from16 v12, v16

    invoke-direct/range {v0 .. v12}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/tradplus/ads/common/serialization/annotation/JSONField;Lcom/tradplus/ads/common/serialization/annotation/JSONField;Ljava/lang/String;Ljava/util/Map;)V

    move-object/from16 v0, v42

    goto :goto_696

    :cond_711
    const/4 v10, 0x0

    :cond_712
    if-nez v24, :cond_726

    move-object/from16 v12, v40

    invoke-virtual {v0, v12}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v3

    if-eqz v3, :cond_71d

    goto :goto_728

    :cond_71d
    :goto_71d
    move-object/from16 v26, v12

    move-object/from16 v38, v13

    move-object/from16 v32, v15

    move-object/from16 v13, v39

    goto :goto_6ac

    :cond_726
    move-object/from16 v12, v40

    :goto_728
    if-eqz v13, :cond_72b

    goto :goto_71d

    :cond_72b
    const/4 v3, 0x3

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

    move-result v4

    if-eqz v17, :cond_753

    new-instance v3, Ljava/util/ArrayList;

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

    const/4 v5, 0x0

    :goto_738
    array-length v11, v15

    if-ge v5, v11, :cond_755

    aget-object v11, v15, v5

    invoke-virtual {v11}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;

    move-result-object v11

    invoke-virtual {v11, v9}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v11

    if-eqz v11, :cond_750

    aget-object v11, v15, v5

    invoke-virtual {v11}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;

    move-result-object v11

    invoke-interface {v3, v11}, Ljava/util/List;->add(Ljava/lang/Object;)Z

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

    goto :goto_738

    :cond_753
    move-object/from16 v3, v18

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

    move-result v5

    const-string v9, "is"

    const-string v11, "g"

    if-nez v5, :cond_807

    const/16 v5, 0x200

    if-le v4, v5, :cond_765

    goto/16 :goto_807

    :cond_765
    const/16 v5, 0x5f

    if-ne v4, v5, :cond_7cc

    if-eqz v17, :cond_7ab

    new-instance v4, Ljava/lang/StringBuilder;

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

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

    const/4 v5, 0x1

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

    move-result-object v8

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

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

    move-result-object v4

    invoke-interface {v3, v4}, Ljava/util/List;->contains(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_78b

    const/4 v3, 0x3

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

    move-result-object v0

    goto :goto_79f

    :cond_78b
    const/4 v3, 0x3

    new-instance v4, Ljava/lang/StringBuilder;

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

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

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

    move-result-object v0

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

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

    move-result-object v0

    :goto_79f
    move-object/from16 v11, p0

    move-object/from16 v4, v37

    invoke-static {v11, v0, v4}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v8

    move-object v5, v4

    move-object/from16 v23, v8

    goto :goto_7ca

    :cond_7ab
    const/4 v3, 0x3

    const/4 v5, 0x1

    move-object/from16 v11, p0

    move-object/from16 v4, v37

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

    move-result-object v8

    invoke-static {v11, v8, v4}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v23

    if-nez v23, :cond_7c8

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

    move-result-object v0

    invoke-static {v11, v0, v4}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v23

    if-nez v23, :cond_7c6

    move-object v0, v8

    :cond_7c6
    move-object v5, v4

    goto :goto_7ca

    :cond_7c8
    move-object v5, v4

    move-object v0, v8

    :goto_7ca
    move-object v8, v11

    goto :goto_827

    :cond_7cc
    const/4 v3, 0x3

    move-object/from16 v11, p0

    move-object/from16 v5, v37

    const/16 v8, 0x66

    if-ne v4, v8, :cond_7db

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

    move-result-object v0

    :goto_7d9
    move-object v8, v11

    goto :goto_825

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

    move-result v4

    const/4 v8, 0x5

    if-lt v4, v8, :cond_7f6

    const/4 v4, 0x4

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

    move-result v4

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

    move-result v4

    if-eqz v4, :cond_7f6

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

    move-result-object v0

    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    goto :goto_7d9

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

    move-result-object v0

    invoke-static {v11, v0, v5}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v3

    if-nez v3, :cond_804

    :goto_800
    move-object/from16 v37, v5

    goto/16 :goto_71d

    :cond_804
    move-object/from16 v23, v3

    goto :goto_7ca

    :cond_807
    :goto_807
    move-object/from16 v8, p0

    move-object/from16 v5, v37

    if-eqz v17, :cond_829

    new-instance v3, Ljava/lang/StringBuilder;

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

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

    const/4 v4, 0x1

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

    move-result-object v0

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

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

    move-result-object v0

    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getPropertyNameByMethodName(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    :goto_825
    move-object/from16 v23, v18

    :goto_827
    const/4 v11, 0x3

    goto :goto_83e

    :cond_829
    sget-boolean v3, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->compatibleWithJavaBean:Z

    if-eqz v3, :cond_837

    const/4 v11, 0x3

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

    move-result-object v0

    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    goto :goto_83c

    :cond_837
    const/4 v11, 0x3

    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getPropertyNameByMethodName(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    :goto_83c
    move-object/from16 v23, v18

    :goto_83e
    if-nez v23, :cond_844

    invoke-static {v8, v0, v5}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v23

    :cond_844
    if-nez v23, :cond_872

    const/4 v4, 0x0

    aget-object v1, v1, v4

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

    if-ne v1, v3, :cond_873

    new-instance v1, Ljava/lang/StringBuilder;

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

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

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

    move-result v3

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

    move-result v3

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

    const/4 v9, 0x1

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

    move-result-object v3

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

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

    move-result-object v1

    invoke-static {v8, v1, v5}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v1

    move-object v3, v1

    goto :goto_876

    :cond_872
    const/4 v4, 0x0

    :cond_873
    const/4 v9, 0x1

    move-object/from16 v3, v23

    :goto_876
    if-eqz v3, :cond_8ea

    const-class v1, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    invoke-static {v3, v1}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v1

    move-object/from16 v23, v1

    check-cast v23, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v23, :cond_8db

    invoke-interface/range {v23 .. v23}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->deserialize()Z

    move-result v1

    if-nez v1, :cond_88c

    goto/16 :goto_800

    :cond_88c
    invoke-interface/range {v23 .. v23}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->ordinal()I

    move-result v6

    invoke-interface/range {v23 .. v23}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->serialzeFeatures()[Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;

    move-result-object v1

    invoke-static {v1}, Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;->of([Lcom/tradplus/ads/common/serialization/serializer/SerializerFeature;)I

    move-result v7

    invoke-interface/range {v23 .. v23}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->parseFeatures()[Lcom/tradplus/ads/common/serialization/parser/Feature;

    move-result-object v1

    invoke-static {v1}, Lcom/tradplus/ads/common/serialization/parser/Feature;->of([Lcom/tradplus/ads/common/serialization/parser/Feature;)I

    move-result v10

    invoke-interface/range {v23 .. v23}, Lcom/tradplus/ads/common/serialization/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_8db

    invoke-interface/range {v23 .. v23}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

    new-instance v0, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/16 v26, 0x0

    move-object/from16 p2, v0

    const/16 v27, 0x0

    move-object/from16 v4, p0

    move-object v9, v5

    const/16 v31, 0x1

    move-object/from16 v5, p1

    move v8, v10

    move-object v10, v9

    move-object/from16 v9, v24

    move-object/from16 v32, v15

    move-object v15, v10

    move-object/from16 v10, v23

    const/16 v33, 0x3

    move-object/from16 v11, v26

    move-object/from16 v26, v12

    move-object/from16 v12, v16

    invoke-direct/range {v0 .. v12}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/tradplus/ads/common/serialization/annotation/JSONField;Lcom/tradplus/ads/common/serialization/annotation/JSONField;Ljava/lang/String;Ljava/util/Map;)V

    invoke-static {v14, v0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    move-object/from16 v38, v13

    move-object/from16 v37, v15

    move-object/from16 v13, v39

    goto :goto_91c

    :cond_8db
    move-object/from16 v26, v12

    move-object/from16 v32, v15

    const/16 v27, 0x0

    const/16 v31, 0x1

    const/16 v33, 0x3

    move-object v15, v5

    move v8, v10

    move-object/from16 v10, v23

    goto :goto_8f8

    :cond_8ea
    move-object/from16 v26, v12

    move-object/from16 v32, v15

    const/16 v27, 0x0

    const/16 v31, 0x1

    const/16 v33, 0x3

    move-object v15, v5

    move v8, v10

    move-object/from16 v10, v18

    :goto_8f8
    move-object/from16 v12, v39

    if-eqz v12, :cond_900

    invoke-virtual {v12, v0}, Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;->translate(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    :cond_900
    move-object v1, v0

    new-instance v11, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/16 v23, 0x0

    move-object v0, v11

    move-object/from16 v4, p0

    move-object/from16 v5, p1

    move-object/from16 v9, v24

    move-object/from16 v37, v15

    move-object v15, v11

    move-object/from16 v11, v23

    move-object/from16 v38, v13

    move-object v13, v12

    move-object/from16 v12, v16

    invoke-direct/range {v0 .. v12}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/tradplus/ads/common/serialization/annotation/JSONField;Lcom/tradplus/ads/common/serialization/annotation/JSONField;Ljava/lang/String;Ljava/util/Map;)V

    invoke-static {v14, v15}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    :goto_91c
    add-int/lit8 v10, v30, 0x1

    move-object/from16 v39, v13

    move/from16 v11, v25

    move-object/from16 v40, v26

    move-object/from16 v15, v32

    move-object/from16 v13, v38

    const/4 v12, 0x0

    goto/16 :goto_5fa

    :cond_92b
    move-object/from16 v38, v13

    move-object/from16 v13, v39

    const/16 v27, 0x0

    const/16 v31, 0x1

    const/16 v33, 0x3

    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getFields()[Ljava/lang/reflect/Field;

    move-result-object v0

    const/4 v11, 0x3

    move-object/from16 v15, p0

    move-object/from16 v12, p1

    invoke-static {v15, v12, v13, v14, v0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;Ljava/util/List;[Ljava/lang/reflect/Field;)V

    invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;

    move-result-object v10

    array-length v8, v10

    const/4 v7, 0x0

    :goto_947
    if-ge v7, v8, :cond_a84

    aget-object v2, v10, v7

    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;

    move-result-object v0

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

    move-result v1

    const/4 v6, 0x4

    if-ge v1, v6, :cond_969

    :cond_956
    :goto_956
    move/from16 v23, v7

    move/from16 v24, v8

    move-object/from16 v25, v9

    move-object/from16 v17, v10

    move-object/from16 v39, v13

    move-object/from16 v44, v37

    :goto_962
    const/16 v26, 0x3

    const/16 v28, 0x4

    move-object v13, v12

    goto/16 :goto_a74

    :cond_969
    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getModifiers()I

    move-result v1

    invoke-static {v1}, Ljava/lang/reflect/Modifier;->isStatic(I)Z

    move-result v1

    if-eqz v1, :cond_974

    goto :goto_956

    :cond_974
    if-nez v38, :cond_956

    invoke-virtual {v0, v9}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v1

    if-eqz v1, :cond_956

    invoke-virtual {v0, v11}, 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_956

    invoke-virtual {v2}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;

    move-result-object v1

    array-length v1, v1

    if-eqz v1, :cond_98e

    goto :goto_956

    :cond_98e
    const-class v1, Ljava/util/Collection;

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

    move-result-object v3

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

    move-result v1

    if-nez v1, :cond_9be

    const-class v1, Ljava/util/Map;

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

    move-result-object v3

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

    move-result v1

    if-nez v1, :cond_9be

    const-class v1, Ljava/util/concurrent/atomic/AtomicBoolean;

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

    move-result-object v3

    if-eq v1, v3, :cond_9be

    const-class v1, Ljava/util/concurrent/atomic/AtomicInteger;

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

    move-result-object v3

    if-eq v1, v3, :cond_9be

    const-class v1, Ljava/util/concurrent/atomic/AtomicLong;

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

    move-result-object v3

    if-ne v1, v3, :cond_956

    :cond_9be
    const-class v1, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    invoke-static {v2, v1}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v1

    move-object/from16 v17, v1

    check-cast v17, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v17, :cond_9d1

    invoke-interface/range {v17 .. v17}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->deserialize()Z

    move-result v1

    if-eqz v1, :cond_9d1

    goto :goto_956

    :cond_9d1
    if-eqz v17, :cond_9e6

    invoke-interface/range {v17 .. v17}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v1

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

    move-result v1

    if-lez v1, :cond_9e6

    invoke-interface/range {v17 .. v17}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->name()Ljava/lang/String;

    move-result-object v0

    move-object/from16 v3, v18

    move-object/from16 v5, v37

    goto :goto_a1f

    :cond_9e6
    invoke-static {v0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getPropertyNameByMethodName(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    move-object/from16 v5, v37

    invoke-static {v15, v0, v5}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;

    move-result-object v1

    if-eqz v1, :cond_a1d

    const-class v3, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    invoke-static {v1, v3}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v3

    check-cast v3, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v3, :cond_a03

    invoke-interface {v3}, Lcom/tradplus/ads/common/serialization/annotation/JSONField;->deserialize()Z

    move-result v3

    if-nez v3, :cond_a03

    goto :goto_a2c

    :cond_a03
    const-class v3, Ljava/util/Collection;

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

    move-result-object v4

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

    move-result v3

    if-nez v3, :cond_a1b

    const-class v3, Ljava/util/Map;

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

    move-result-object v4

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

    move-result v3

    if-eqz v3, :cond_a1d

    :cond_a1b
    move-object v3, v1

    goto :goto_a1f

    :cond_a1d
    move-object/from16 v3, v18

    :goto_a1f
    if-eqz v13, :cond_a25

    invoke-virtual {v13, v0}, Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;->translate(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    :cond_a25
    move-object v1, v0

    invoke-static {v14, v1}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Ljava/lang/String;)Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    move-result-object v0

    if-eqz v0, :cond_a3a

    :goto_a2c
    move-object/from16 v44, v5

    move/from16 v23, v7

    move/from16 v24, v8

    move-object/from16 v25, v9

    move-object/from16 v17, v10

    move-object/from16 v39, v13

    goto/16 :goto_962

    :cond_a3a
    new-instance v4, Lcom/tradplus/ads/common/serialization/util/FieldInfo;

    const/16 v23, 0x0

    const/16 v24, 0x0

    const/16 v25, 0x0

    const/16 v26, 0x0

    const/16 v27, 0x0

    move-object v0, v4

    move-object/from16 v43, v4

    move-object/from16 v4, p0

    move-object/from16 v44, v5

    move-object/from16 v5, p1

    const/16 v28, 0x4

    move/from16 v6, v23

    move/from16 v23, v7

    move/from16 v7, v24

    move/from16 v24, v8

    move/from16 v8, v25

    move-object/from16 v25, v9

    move-object/from16 v9, v17

    move-object/from16 v17, v10

    move-object/from16 v10, v26

    const/16 v26, 0x3

    move-object/from16 v11, v27

    move-object/from16 v39, v13

    move-object v13, v12

    move-object/from16 v12, v16

    invoke-direct/range {v0 .. v12}, Lcom/tradplus/ads/common/serialization/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/tradplus/ads/common/serialization/annotation/JSONField;Lcom/tradplus/ads/common/serialization/annotation/JSONField;Ljava/lang/String;Ljava/util/Map;)V

    move-object/from16 v0, v43

    invoke-static {v14, v0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/util/List;Lcom/tradplus/ads/common/serialization/util/FieldInfo;)Z

    :goto_a74
    add-int/lit8 v7, v23, 0x1

    move-object v12, v13

    move-object/from16 v10, v17

    move/from16 v8, v24

    move-object/from16 v9, v25

    move-object/from16 v13, v39

    move-object/from16 v37, v44

    const/4 v11, 0x3

    goto/16 :goto_947

    :cond_a84
    move-object/from16 v39, v13

    move-object/from16 v44, v37

    move-object v13, v12

    invoke-interface {v14}, Ljava/util/List;->size()I

    move-result v0

    if-nez v0, :cond_aa9

    invoke-static/range {p0 .. p0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->isXmlField(Ljava/lang/Class;)Z

    move-result v0

    if-eqz v0, :cond_a96

    goto :goto_a98

    :cond_a96
    move/from16 v31, p3

    :goto_a98
    if-eqz v31, :cond_aa9

    move-object v0, v15

    :goto_a9b
    if-eqz v0, :cond_aa9

    move-object/from16 v2, v39

    move-object/from16 v1, v44

    invoke-static {v15, v13, v2, v14, v1}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->a(Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/tradplus/ads/common/serialization/PropertyNamingStrategy;Ljava/util/List;[Ljava/lang/reflect/Field;)V

    invoke-virtual {v0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;

    move-result-object v0

    goto :goto_a9b

    :cond_aa9
    new-instance v9, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;

    move-object v0, v9

    move-object/from16 v1, p0

    move-object/from16 v2, v38

    move-object/from16 v3, v19

    move-object/from16 v4, v22

    move-object/from16 v5, v21

    move-object/from16 v6, v20

    move-object/from16 v7, v29

    move-object v8, v14

    invoke-direct/range {v0 .. v8}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;Lcom/tradplus/ads/common/serialization/annotation/JSONType;Ljava/util/List;)V

    return-object v9
.end method

.method public static getBuilderClass(Lcom/tradplus/ads/common/serialization/annotation/JSONType;)Ljava/lang/Class;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/tradplus/ads/common/serialization/annotation/JSONType;",
            ")",
            "Ljava/lang/Class<",
            "*>;"
        }
    .end annotation

    const/4 v0, 0x0

    invoke-static {v0, p0}, Lcom/tradplus/ads/common/serialization/util/JavaBeanInfo;->getBuilderClass(Ljava/lang/Class;Lcom/tradplus/ads/common/serialization/annotation/JSONType;)Ljava/lang/Class;

    move-result-object p0

    return-object p0
.end method

.method public static getBuilderClass(Ljava/lang/Class;Lcom/tradplus/ads/common/serialization/annotation/JSONType;)Ljava/lang/Class;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class<",
            "*>;",
            "Lcom/tradplus/ads/common/serialization/annotation/JSONType;",
            ")",
            "Ljava/lang/Class<",
            "*>;"
        }
    .end annotation

    if-eqz p0, :cond_15

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

    move-result-object p0

    const-string v0, "org.springframework.security.web.savedrequest.DefaultSavedRequest"

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

    move-result p0

    if-eqz p0, :cond_15

    const-string p0, "org.springframework.security.web.savedrequest.DefaultSavedRequest$Builder"

    invoke-static {p0}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->loadClass(Ljava/lang/String;)Ljava/lang/Class;

    move-result-object p0

    return-object p0

    :cond_15
    const/4 p0, 0x0

    if-nez p1, :cond_19

    return-object p0

    :cond_19
    invoke-interface {p1}, Lcom/tradplus/ads/common/serialization/annotation/JSONType;->builder()Ljava/lang/Class;

    move-result-object p1

    const-class v0, Ljava/lang/Void;

    if-ne p1, v0, :cond_22

    return-object p0

    :cond_22
    return-object p1
.end method

.method public static getCreatorConstructor([Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
    .registers 15
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "([",
            "Ljava/lang/reflect/Constructor;",
            ")",
            "Ljava/lang/reflect/Constructor<",
            "*>;"
        }
    .end annotation

    array-length v0, p0

    const/4 v1, 0x0

    const/4 v2, 0x0

    move-object v3, v2

    const/4 v2, 0x0

    :goto_5
    const-string v4, "multi-JSONCreator"

    if-ge v2, v0, :cond_22

    aget-object v5, p0, v2

    const-class v6, Lcom/tradplus/ads/common/serialization/annotation/JSONCreator;

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

    move-result-object v6

    check-cast v6, Lcom/tradplus/ads/common/serialization/annotation/JSONCreator;

    if-eqz v6, :cond_1f

    if-nez v3, :cond_19

    move-object v3, v5

    goto :goto_1f

    :cond_19
    new-instance p0, Lcom/tradplus/ads/common/serialization/JSONException;

    invoke-direct {p0, v4}, Lcom/tradplus/ads/common/serialization/JSONException;-><init>(Ljava/lang/String;)V

    throw p0

    :cond_1f
    :goto_1f
    add-int/lit8 v2, v2, 0x1

    goto :goto_5

    :cond_22
    if-eqz v3, :cond_25

    return-object v3

    :cond_25
    array-length v0, p0

    const/4 v2, 0x0

    :goto_27
    if-ge v2, v0, :cond_5f

    aget-object v5, p0, v2

    invoke-static {v5}, Lcom/tradplus/ads/common/serialization/util/TypeUtils;->getParameterAnnotations(Ljava/lang/reflect/Constructor;)[[Ljava/lang/annotation/Annotation;

    move-result-object v6

    array-length v7, v6

    if-nez v7, :cond_33

    goto :goto_5c

    :cond_33
    array-length v7, v6

    const/4 v8, 0x0

    :goto_35
    const/4 v9, 0x1

    if-ge v8, v7, :cond_50

    aget-object v10, v6, v8

    array-length v11, v10

    const/4 v12, 0x0

    :goto_3c
    if-ge v12, v11, :cond_48

    aget-object v13, v10, v12

    instance-of v13, v13, Lcom/tradplus/ads/common/serialization/annotation/JSONField;

    if-eqz v13, :cond_45

    goto :goto_49

    :cond_45
    add-int/lit8 v12, v12, 0x1

    goto :goto_3c

    :cond_48
    const/4 v9, 0x0

    :goto_49
    if-nez v9, :cond_4d

    const/4 v9, 0x0

    goto :goto_50

    :cond_4d
    add-int/lit8 v8, v8, 0x1

    goto :goto_35

    :cond_50
    :goto_50
    if-eqz v9, :cond_5c

    if-nez v3, :cond_56

    move-object v3, v5

    goto :goto_5c

    :cond_56
    new-instance p0, Lcom/tradplus/ads/common/serialization/JSONException;

    invoke-direct {p0, v4}, Lcom/tradplus/ads/common/serialization/JSONException;-><init>(Ljava/lang/String;)V

    throw p0

    :cond_5c
    :goto_5c
    add-int/lit8 v2, v2, 0x1

    goto :goto_27

    :cond_5f
    if-eqz v3, :cond_61

    :cond_61
    return-object v3
.end method