j.smali

.class public final Lcom/google/gson/internal/a/j;
.super Ljava/lang/Object;
.source "ReflectiveTypeAdapterFactory.java"

# interfaces
.implements Lcom/google/gson/o;


# instance fields
.field private final bfi:Lcom/google/gson/internal/b;

.field private final bgm:Lcom/google/gson/c;

.field private final bgn:Lcom/google/gson/internal/c;


# direct methods
.method public constructor <init>(Lcom/google/gson/internal/b;Lcom/google/gson/c;Lcom/google/gson/internal/c;)V
    .registers 4

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

    .line 56
    iput-object p1, p0, Lcom/google/gson/internal/a/j;->bfi:Lcom/google/gson/internal/b;

    .line 57
    iput-object p2, p0, Lcom/google/gson/internal/a/j;->bgm:Lcom/google/gson/c;

    .line 58
    iput-object p3, p0, Lcom/google/gson/internal/a/j;->bgn:Lcom/google/gson/internal/c;

    .line 60
    return-void
.end method

.method private a(Ljava/lang/reflect/Field;)Ljava/util/List;
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/reflect/Field;",
            ")",
            "Ljava/util/List",
            "<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    .prologue
    .line 72
    const-class v0, Lcom/google/gson/a/b;

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

    move-result-object v0

    check-cast v0, Lcom/google/gson/a/b;

    .line 73
    if-nez v0, :cond_15

    .line 74
    iget-object v0, p0, Lcom/google/gson/internal/a/j;->bgm:Lcom/google/gson/c;

    invoke-interface {v0, p1}, Lcom/google/gson/c;->translateName(Ljava/lang/reflect/Field;)Ljava/lang/String;

    move-result-object v0

    .line 75
    invoke-static {v0}, Ljava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List;

    move-result-object v0

    .line 89
    :cond_14
    :goto_14
    return-object v0

    .line 78
    :cond_15
    invoke-interface {v0}, Lcom/google/gson/a/b;->value()Ljava/lang/String;

    move-result-object v1

    .line 79
    invoke-interface {v0}, Lcom/google/gson/a/b;->Ac()[Ljava/lang/String;

    move-result-object v2

    .line 80
    array-length v0, v2

    if-nez v0, :cond_25

    .line 81
    invoke-static {v1}, Ljava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List;

    move-result-object v0

    goto :goto_14

    .line 84
    :cond_25
    new-instance v0, Ljava/util/ArrayList;

    array-length v3, v2

    add-int/lit8 v3, v3, 0x1

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

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

    .line 86
    array-length v3, v2

    const/4 v1, 0x0

    :goto_32
    if-ge v1, v3, :cond_14

    aget-object v4, v2, v1

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

    .line 86
    add-int/lit8 v1, v1, 0x1

    goto :goto_32
.end method

.method private a(Lcom/google/gson/d;Lcom/google/gson/b/a;Ljava/lang/Class;)Ljava/util/Map;
    .registers 25
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/google/gson/d;",
            "Lcom/google/gson/b/a",
            "<*>;",
            "Ljava/lang/Class",
            "<*>;)",
            "Ljava/util/Map",
            "<",
            "Ljava/lang/String;",
            "Lcom/google/gson/internal/a/l;",
            ">;"
        }
    .end annotation

    .prologue
    .line 143
    new-instance v12, Ljava/util/LinkedHashMap;

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

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

    move-result v1

    if-eqz v1, :cond_d

    move-object v1, v12

    .line 177
    :goto_c
    return-object v1

    .line 2101
    :cond_d
    move-object/from16 v0, p2

    iget-object v15, v0, Lcom/google/gson/b/a;->type:Ljava/lang/reflect/Type;

    .line 149
    :goto_11
    const-class v1, Ljava/lang/Object;

    move-object/from16 v0, p3

    if-eq v0, v1, :cond_e8

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

    move-result-object v16

    .line 151
    move-object/from16 v0, v16

    array-length v0, v0

    move/from16 v17, v0

    const/4 v1, 0x0

    move v14, v1

    :goto_22
    move/from16 v0, v17

    if-ge v14, v0, :cond_ce

    aget-object v5, v16, v14

    .line 152
    const/4 v1, 0x1

    move-object/from16 v0, p0

    invoke-direct {v0, v5, v1}, Lcom/google/gson/internal/a/j;->a(Ljava/lang/reflect/Field;Z)Z

    move-result v3

    .line 153
    const/4 v1, 0x0

    move-object/from16 v0, p0

    invoke-direct {v0, v5, v1}, Lcom/google/gson/internal/a/j;->a(Ljava/lang/reflect/Field;Z)Z

    move-result v4

    .line 154
    if-nez v3, :cond_3a

    if-eqz v4, :cond_c9

    .line 157
    :cond_3a
    const/4 v1, 0x1

    invoke-virtual {v5, v1}, Ljava/lang/reflect/Field;->setAccessible(Z)V

    .line 3101
    move-object/from16 v0, p2

    iget-object v1, v0, Lcom/google/gson/b/a;->type:Ljava/lang/reflect/Type;

    .line 158
    invoke-virtual {v5}, Ljava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type;

    move-result-object v2

    move-object/from16 v0, p3

    invoke-static {v1, v0, v2}, Lcom/google/gson/internal/$Gson$Types;->resolve(Ljava/lang/reflect/Type;Ljava/lang/Class;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;

    move-result-object v18

    .line 159
    move-object/from16 v0, p0

    invoke-direct {v0, v5}, Lcom/google/gson/internal/a/j;->a(Ljava/lang/reflect/Field;)Ljava/util/List;

    move-result-object v19

    .line 160
    const/4 v11, 0x0

    .line 161
    const/4 v1, 0x0

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

    move-result v20

    move v13, v1

    :goto_59
    move/from16 v0, v20

    if-ge v13, v0, :cond_a8

    .line 162
    move-object/from16 v0, v19

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

    move-result-object v2

    check-cast v2, Ljava/lang/String;

    .line 163
    if-eqz v13, :cond_68

    const/4 v3, 0x0

    .line 165
    :cond_68
    invoke-static/range {v18 .. v18}, Lcom/google/gson/b/a;->d(Ljava/lang/reflect/Type;)Lcom/google/gson/b/a;

    move-result-object v9

    .line 4094
    iget-object v1, v9, Lcom/google/gson/b/a;->bhL:Ljava/lang/Class;

    .line 3106
    invoke-static {v1}, Lcom/google/gson/internal/j;->c(Ljava/lang/reflect/Type;)Z

    move-result v10

    .line 3108
    const-class v1, Lcom/google/gson/a/a;

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

    move-result-object v1

    check-cast v1, Lcom/google/gson/a/a;

    .line 3109
    const/4 v7, 0x0

    .line 3110
    if-eqz v1, :cond_87

    .line 3111
    move-object/from16 v0, p0

    iget-object v6, v0, Lcom/google/gson/internal/a/j;->bfi:Lcom/google/gson/internal/b;

    move-object/from16 v0, p1

    invoke-static {v6, v0, v9, v1}, Lcom/google/gson/internal/a/e;->a(Lcom/google/gson/internal/b;Lcom/google/gson/d;Lcom/google/gson/b/a;Lcom/google/gson/a/a;)Lcom/google/gson/n;

    move-result-object v7

    .line 3114
    :cond_87
    if-eqz v7, :cond_a6

    const/4 v6, 0x1

    .line 3115
    :goto_8a
    if-nez v7, :cond_92

    move-object/from16 v0, p1

    invoke-virtual {v0, v9}, Lcom/google/gson/d;->a(Lcom/google/gson/b/a;)Lcom/google/gson/n;

    move-result-object v7

    .line 3118
    :cond_92
    new-instance v1, Lcom/google/gson/internal/a/j$1;

    move-object/from16 v8, p1

    invoke-direct/range {v1 .. v10}, Lcom/google/gson/internal/a/j$1;-><init>(Ljava/lang/String;ZZLjava/lang/reflect/Field;ZLcom/google/gson/n;Lcom/google/gson/d;Lcom/google/gson/b/a;Z)V

    .line 166
    invoke-interface {v12, v2, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/google/gson/internal/a/l;

    .line 167
    if-nez v11, :cond_eb

    .line 161
    :goto_a1
    add-int/lit8 v2, v13, 0x1

    move v13, v2

    move-object v11, v1

    goto :goto_59

    .line 3114
    :cond_a6
    const/4 v6, 0x0

    goto :goto_8a

    .line 169
    :cond_a8
    if-eqz v11, :cond_c9

    .line 170
    new-instance v1, Ljava/lang/IllegalArgumentException;

    new-instance v2, Ljava/lang/StringBuilder;

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

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

    move-result-object v2

    const-string v3, " declares multiple JSON fields named "

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

    move-result-object v2

    iget-object v3, v11, Lcom/google/gson/internal/a/l;->name:Ljava/lang/String;

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

    move-result-object v2

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

    move-result-object v2

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

    throw v1

    .line 151
    :cond_c9
    add-int/lit8 v1, v14, 0x1

    move v14, v1

    goto/16 :goto_22

    .line 4101
    :cond_ce
    move-object/from16 v0, p2

    iget-object v1, v0, Lcom/google/gson/b/a;->type:Ljava/lang/reflect/Type;

    .line 174
    invoke-virtual/range {p3 .. p3}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;

    move-result-object v2

    move-object/from16 v0, p3

    invoke-static {v1, v0, v2}, Lcom/google/gson/internal/$Gson$Types;->resolve(Ljava/lang/reflect/Type;Ljava/lang/Class;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;

    move-result-object v1

    invoke-static {v1}, Lcom/google/gson/b/a;->d(Ljava/lang/reflect/Type;)Lcom/google/gson/b/a;

    move-result-object p2

    .line 5094
    move-object/from16 v0, p2

    iget-object v0, v0, Lcom/google/gson/b/a;->bhL:Ljava/lang/Class;

    move-object/from16 p3, v0

    goto/16 :goto_11

    :cond_e8
    move-object v1, v12

    .line 177
    goto/16 :goto_c

    :cond_eb
    move-object v1, v11

    goto :goto_a1
.end method

.method private a(Ljava/lang/reflect/Field;Z)Z
    .registers 11

    .prologue
    const/4 v3, 0x0

    const/4 v2, 0x1

    .line 63
    iget-object v4, p0, Lcom/google/gson/internal/a/j;->bgn:Lcom/google/gson/internal/c;

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

    move-result-object v0

    invoke-virtual {v4, v0, p2}, Lcom/google/gson/internal/c;->a(Ljava/lang/Class;Z)Z

    move-result v0

    if-nez v0, :cond_8c

    .line 1150
    iget v0, v4, Lcom/google/gson/internal/c;->bfA:I

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

    move-result v1

    and-int/2addr v0, v1

    if-eqz v0, :cond_1c

    move v0, v2

    .line 1067
    :goto_18
    if-nez v0, :cond_8c

    move v0, v2

    :goto_1b
    return v0

    .line 1154
    :cond_1c
    iget-wide v0, v4, Lcom/google/gson/internal/c;->bfz:D

    const-wide/high16 v6, -0x4010000000000000L    # -1.0

    cmpl-double v0, v0, v6

    if-eqz v0, :cond_3c

    const-class v0, Lcom/google/gson/a/c;

    .line 1155
    invoke-virtual {p1, v0}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

    move-result-object v0

    check-cast v0, Lcom/google/gson/a/c;

    const-class v1, Lcom/google/gson/a/d;

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

    move-result-object v1

    check-cast v1, Lcom/google/gson/a/d;

    invoke-virtual {v4, v0, v1}, Lcom/google/gson/internal/c;->a(Lcom/google/gson/a/c;Lcom/google/gson/a/d;)Z

    move-result v0

    if-nez v0, :cond_3c

    move v0, v2

    .line 1156
    goto :goto_18

    .line 1159
    :cond_3c
    invoke-virtual {p1}, Ljava/lang/reflect/Field;->isSynthetic()Z

    move-result v0

    if-eqz v0, :cond_44

    move v0, v2

    .line 1160
    goto :goto_18

    .line 1170
    :cond_44
    iget-boolean v0, v4, Lcom/google/gson/internal/c;->bfB:Z

    if-nez v0, :cond_54

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

    move-result-object v0

    invoke-static {v0}, Lcom/google/gson/internal/c;->isInnerClass(Ljava/lang/Class;)Z

    move-result v0

    if-eqz v0, :cond_54

    move v0, v2

    .line 1171
    goto :goto_18

    .line 1174
    :cond_54
    invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;

    move-result-object v0

    invoke-static {v0}, Lcom/google/gson/internal/c;->r(Ljava/lang/Class;)Z

    move-result v0

    if-eqz v0, :cond_60

    move v0, v2

    .line 1175
    goto :goto_18

    .line 1178
    :cond_60
    if-eqz p2, :cond_87

    iget-object v0, v4, Lcom/google/gson/internal/c;->bfC:Ljava/util/List;

    .line 1179
    :goto_64
    invoke-interface {v0}, Ljava/util/List;->isEmpty()Z

    move-result v1

    if-nez v1, :cond_8a

    .line 1180
    new-instance v1, Lcom/google/gson/b;

    invoke-direct {v1, p1}, Lcom/google/gson/b;-><init>(Ljava/lang/reflect/Field;)V

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

    move-result-object v1

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

    move-result v0

    if-eqz v0, :cond_8a

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

    move-result-object v0

    check-cast v0, Lcom/google/gson/a;

    .line 1182
    invoke-interface {v0}, Lcom/google/gson/a;->zT()Z

    move-result v0

    if-eqz v0, :cond_73

    move v0, v2

    .line 1183
    goto :goto_18

    .line 1178
    :cond_87
    iget-object v0, v4, Lcom/google/gson/internal/c;->bfD:Ljava/util/List;

    goto :goto_64

    :cond_8a
    move v0, v3

    .line 1188
    goto :goto_18

    :cond_8c
    move v0, v3

    .line 63
    goto :goto_1b
.end method


# virtual methods
.method public final a(Lcom/google/gson/d;Lcom/google/gson/b/a;)Lcom/google/gson/n;
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T:",
            "Ljava/lang/Object;",
            ">(",
            "Lcom/google/gson/d;",
            "Lcom/google/gson/b/a",
            "<TT;>;)",
            "Lcom/google/gson/n",
            "<TT;>;"
        }
    .end annotation

    .prologue
    .line 93
    .line 2094
    iget-object v1, p2, Lcom/google/gson/b/a;->bhL:Ljava/lang/Class;

    .line 95
    const-class v0, Ljava/lang/Object;

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

    move-result v0

    if-nez v0, :cond_c

    .line 96
    const/4 v0, 0x0

    .line 100
    :goto_b
    return-object v0

    .line 99
    :cond_c
    iget-object v0, p0, Lcom/google/gson/internal/a/j;->bfi:Lcom/google/gson/internal/b;

    invoke-virtual {v0, p2}, Lcom/google/gson/internal/b;->b(Lcom/google/gson/b/a;)Lcom/google/gson/internal/i;

    move-result-object v2

    .line 100
    new-instance v0, Lcom/google/gson/internal/a/k;

    invoke-direct {p0, p1, p2, v1}, Lcom/google/gson/internal/a/j;->a(Lcom/google/gson/d;Lcom/google/gson/b/a;Ljava/lang/Class;)Ljava/util/Map;

    move-result-object v1

    invoke-direct {v0, v2, v1}, Lcom/google/gson/internal/a/k;-><init>(Lcom/google/gson/internal/i;Ljava/util/Map;)V

    goto :goto_b
.end method