w.smali

.class public final Lcom/alibaba/fastjson/parser/deserializer/w;
.super Lcom/alibaba/fastjson/parser/deserializer/m;
.source "SourceFile"


# direct methods
.method public constructor <init>(Lcom/alibaba/fastjson/parser/i;Ljava/lang/Class;)V
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/alibaba/fastjson/parser/i;",
            "Ljava/lang/Class<",
            "*>;)V"
        }
    .end annotation

    invoke-direct {p0, p1, p2, p2}, Lcom/alibaba/fastjson/parser/deserializer/m;-><init>(Lcom/alibaba/fastjson/parser/i;Ljava/lang/Class;Ljava/lang/reflect/Type;)V

    return-void
.end method


# virtual methods
.method public final b()I
    .registers 2

    const/16 v0, 0xc

    return v0
.end method

.method public final c(Lcom/alibaba/fastjson/parser/a;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
    .registers 16
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T:",
            "Ljava/lang/Object;",
            ">(",
            "Lcom/alibaba/fastjson/parser/a;",
            "Ljava/lang/reflect/Type;",
            "Ljava/lang/Object;",
            ")TT;"
        }
    .end annotation

    .line 1
    iget-object p3, p1, Lcom/alibaba/fastjson/parser/a;->f:Lcom/alibaba/fastjson/parser/c;

    .line 2
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I

    move-result v0

    const/4 v1, 0x0

    const/16 v2, 0x8

    if-ne v0, v2, :cond_f

    .line 3
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->o()V

    return-object v1

    .line 4
    :cond_f
    iget v0, p1, Lcom/alibaba/fastjson/parser/a;->k:I

    const/4 v3, 0x2

    const-string v4, "syntax error"

    if-ne v0, v3, :cond_1a

    const/4 v0, 0x0

    .line 5
    iput v0, p1, Lcom/alibaba/fastjson/parser/a;->k:I

    goto :goto_22

    .line 6
    :cond_1a
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I

    move-result v0

    const/16 v3, 0xc

    if-ne v0, v3, :cond_118

    :goto_22
    if-eqz p2, :cond_33

    .line 7
    instance-of v0, p2, Ljava/lang/Class;

    if-eqz v0, :cond_33

    .line 8
    check-cast p2, Ljava/lang/Class;

    .line 9
    const-class v0, Ljava/lang/Throwable;

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

    move-result v0

    if-eqz v0, :cond_33

    goto :goto_34

    :cond_33
    move-object p2, v1

    .line 10
    :goto_34
    new-instance v0, Ljava/util/HashMap;

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

    move-object v3, v1

    move-object v5, v3

    move-object v6, v5

    .line 11
    :cond_3c
    :goto_3c
    iget-object v7, p1, Lcom/alibaba/fastjson/parser/a;->b:Lcom/alibaba/fastjson/parser/j;

    .line 12
    invoke-interface {p3, v7}, Lcom/alibaba/fastjson/parser/c;->N0(Lcom/alibaba/fastjson/parser/j;)Ljava/lang/String;

    move-result-object v7

    const/16 v8, 0xd

    const/16 v9, 0x10

    if-nez v7, :cond_62

    .line 13
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I

    move-result v10

    if-ne v10, v8, :cond_53

    .line 14
    invoke-interface {p3, v9}, Lcom/alibaba/fastjson/parser/c;->C(I)V

    goto/16 :goto_de

    .line 15
    :cond_53
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I

    move-result v10

    if-ne v10, v9, :cond_62

    .line 16
    sget-object v10, Lcom/alibaba/fastjson/parser/b;->AllowArbitraryCommas:Lcom/alibaba/fastjson/parser/b;

    invoke-interface {p3, v10}, Lcom/alibaba/fastjson/parser/c;->h(Lcom/alibaba/fastjson/parser/b;)Z

    move-result v10

    if-eqz v10, :cond_62

    goto :goto_3c

    :cond_62
    const/4 v10, 0x4

    .line 17
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->x()V

    .line 18
    sget-object v11, Lcom/alibaba/fastjson/a;->c:Ljava/lang/String;

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

    move-result v11

    if-eqz v11, :cond_8a

    .line 19
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I

    move-result p2

    if-ne p2, v10, :cond_84

    .line 20
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->K0()Ljava/lang/String;

    move-result-object p2

    .line 21
    iget-object v7, p1, Lcom/alibaba/fastjson/parser/a;->c:Lcom/alibaba/fastjson/parser/i;

    .line 22
    const-class v10, Ljava/lang/Throwable;

    invoke-virtual {v7, p2, v10}, Lcom/alibaba/fastjson/parser/i;->a(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Class;

    move-result-object p2

    .line 23
    invoke-interface {p3, v9}, Lcom/alibaba/fastjson/parser/c;->C(I)V

    goto :goto_d5

    .line 24
    :cond_84
    new-instance p1, Lcom/alibaba/fastjson/d;

    invoke-direct {p1, v4}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;)V

    throw p1

    :cond_8a
    const-string v11, "message"

    .line 25
    invoke-virtual {v11, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v11

    if-eqz v11, :cond_ae

    .line 26
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I

    move-result v5

    if-ne v5, v2, :cond_9a

    move-object v5, v1

    goto :goto_a4

    .line 27
    :cond_9a
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I

    move-result v5

    if-ne v5, v10, :cond_a8

    .line 28
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->K0()Ljava/lang/String;

    move-result-object v5

    .line 29
    :goto_a4
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->o()V

    goto :goto_d5

    .line 30
    :cond_a8
    new-instance p1, Lcom/alibaba/fastjson/d;

    invoke-direct {p1, v4}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;)V

    throw p1

    :cond_ae
    const-string v10, "cause"

    .line 31
    invoke-virtual {v10, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v11

    if-eqz v11, :cond_bd

    .line 32
    invoke-virtual {p0, p1, v1, v10}, Lcom/alibaba/fastjson/parser/deserializer/w;->c(Lcom/alibaba/fastjson/parser/a;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Ljava/lang/Throwable;

    goto :goto_d5

    :cond_bd
    const-string v10, "stackTrace"

    .line 33
    invoke-virtual {v10, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v10

    if-eqz v10, :cond_ce

    .line 34
    const-class v6, [Ljava/lang/StackTraceElement;

    .line 35
    invoke-virtual {p1, v6, v1}, Lcom/alibaba/fastjson/parser/a;->J(Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v6

    .line 36
    check-cast v6, [Ljava/lang/StackTraceElement;

    goto :goto_d5

    .line 37
    :cond_ce
    invoke-virtual {p1, v1}, Lcom/alibaba/fastjson/parser/a;->D(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v10

    .line 38
    invoke-virtual {v0, v7, v10}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 39
    :goto_d5
    invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I

    move-result v7

    if-ne v7, v8, :cond_3c

    .line 40
    invoke-interface {p3, v9}, Lcom/alibaba/fastjson/parser/c;->C(I)V

    :goto_de
    if-nez p2, :cond_e6

    .line 41
    new-instance p1, Ljava/lang/Exception;

    invoke-direct {p1, v5, v3}, Ljava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V

    goto :goto_f9

    .line 42
    :cond_e6
    const-class p1, Ljava/lang/Throwable;

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

    move-result p1

    if-eqz p1, :cond_108

    .line 43
    :try_start_ee
    invoke-virtual {p0, v5, v3, p2}, Lcom/alibaba/fastjson/parser/deserializer/w;->l(Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Class;)Ljava/lang/Throwable;

    move-result-object p1

    if-nez p1, :cond_f9

    .line 44
    new-instance p1, Ljava/lang/Exception;

    invoke-direct {p1, v5, v3}, Ljava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
    :try_end_f9
    .catch Ljava/lang/Exception; {:try_start_ee .. :try_end_f9} :catch_ff

    :cond_f9
    :goto_f9
    if-eqz v6, :cond_fe

    .line 45
    invoke-virtual {p1, v6}, Ljava/lang/Throwable;->setStackTrace([Ljava/lang/StackTraceElement;)V

    :cond_fe
    return-object p1

    :catch_ff
    move-exception p1

    .line 46
    new-instance p2, Lcom/alibaba/fastjson/d;

    const-string p3, "create instance error"

    invoke-direct {p2, p3, p1}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V

    throw p2

    .line 47
    :cond_108
    new-instance p1, Lcom/alibaba/fastjson/d;

    const-string p3, "type not match, not Throwable. "

    .line 48
    invoke-static {p3}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object p3

    .line 49
    invoke-static {p2, p3}, Landroidx/appcompat/view/f;->c(Ljava/lang/Class;Ljava/lang/StringBuilder;)Ljava/lang/String;

    move-result-object p2

    .line 50
    invoke-direct {p1, p2}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;)V

    throw p1

    .line 51
    :cond_118
    new-instance p1, Lcom/alibaba/fastjson/d;

    invoke-direct {p1, v4}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;)V

    throw p1
.end method

.method public final l(Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Class;)Ljava/lang/Throwable;
    .registers 18
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            "Ljava/lang/Throwable;",
            "Ljava/lang/Class<",
            "*>;)",
            "Ljava/lang/Throwable;"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/Exception;
        }
    .end annotation

    .line 1
    const-class v0, Ljava/lang/String;

    .line 2
    invoke-virtual/range {p3 .. p3}, Ljava/lang/Class;->getConstructors()[Ljava/lang/reflect/Constructor;

    move-result-object v1

    array-length v2, v1

    const/4 v3, 0x0

    const/4 v4, 0x0

    move-object v6, v4

    move-object v7, v6

    move-object v8, v7

    const/4 v5, 0x0

    :goto_d
    const/4 v9, 0x2

    const/4 v10, 0x1

    if-ge v5, v2, :cond_36

    aget-object v11, v1, v5

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

    move-result-object v12

    .line 4
    array-length v13, v12

    if-nez v13, :cond_1c

    move-object v8, v11

    goto :goto_33

    .line 5
    :cond_1c
    array-length v13, v12

    if-ne v13, v10, :cond_25

    aget-object v13, v12, v3

    if-ne v13, v0, :cond_25

    move-object v7, v11

    goto :goto_33

    .line 6
    :cond_25
    array-length v13, v12

    if-ne v13, v9, :cond_33

    aget-object v9, v12, v3

    if-ne v9, v0, :cond_33

    aget-object v9, v12, v10

    const-class v10, Ljava/lang/Throwable;

    if-ne v9, v10, :cond_33

    move-object v6, v11

    :cond_33
    :goto_33
    add-int/lit8 v5, v5, 0x1

    goto :goto_d

    :cond_36
    if-eqz v6, :cond_45

    new-array v0, v9, [Ljava/lang/Object;

    aput-object p1, v0, v3

    aput-object p2, v0, v10

    .line 7
    invoke-virtual {v6, v0}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Throwable;

    return-object v0

    :cond_45
    if-eqz v7, :cond_52

    new-array v0, v10, [Ljava/lang/Object;

    aput-object p1, v0, v3

    .line 8
    invoke-virtual {v7, v0}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Throwable;

    return-object v0

    :cond_52
    if-eqz v8, :cond_5d

    new-array v0, v3, [Ljava/lang/Object;

    .line 9
    invoke-virtual {v8, v0}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Throwable;

    return-object v0

    :cond_5d
    return-object v4
.end method