m.smali

.class abstract Lxb/m;
.super Lxb/a0;
.source "SourceFile"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lxb/m$a;,
        Lxb/m$c;,
        Lxb/m$b;
    }
.end annotation

.annotation system Ldalvik/annotation/Signature;
    value = {
        "<ResponseT:",
        "Ljava/lang/Object;",
        "ReturnT:",
        "Ljava/lang/Object;",
        ">",
        "Lxb/a0<",
        "TReturnT;>;"
    }
.end annotation


# instance fields
.field private final a:Lxb/x;

.field private final b:Llb/d$a;

.field private final c:Lxb/h;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lxb/h<",
            "Llb/c0;",
            "TResponseT;>;"
        }
    .end annotation
.end field


# direct methods
.method constructor <init>(Lxb/x;Llb/d$a;Lxb/h;)V
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lxb/x;",
            "Llb/d$a;",
            "Lxb/h<",
            "Llb/c0;",
            "TResponseT;>;)V"
        }
    .end annotation

    invoke-direct {p0}, Lxb/a0;-><init>()V

    iput-object p1, p0, Lxb/m;->a:Lxb/x;

    iput-object p2, p0, Lxb/m;->b:Llb/d$a;

    iput-object p3, p0, Lxb/m;->c:Lxb/h;

    return-void
.end method

.method private static d(Lxb/z;Ljava/lang/reflect/Method;Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;)Lxb/c;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<ResponseT:",
            "Ljava/lang/Object;",
            "ReturnT:",
            "Ljava/lang/Object;",
            ">(",
            "Lxb/z;",
            "Ljava/lang/reflect/Method;",
            "Ljava/lang/reflect/Type;",
            "[",
            "Ljava/lang/annotation/Annotation;",
            ")",
            "Lxb/c<",
            "TResponseT;TReturnT;>;"
        }
    .end annotation

    :try_start_0
    invoke-virtual {p0, p2, p3}, Lxb/z;->a(Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;)Lxb/c;

    move-result-object p0
    :try_end_4
    .catch Ljava/lang/RuntimeException; {:try_start_0 .. :try_end_4} :catch_5

    return-object p0

    :catch_5
    move-exception p0

    const/4 p3, 0x1

    new-array p3, p3, [Ljava/lang/Object;

    const/4 v0, 0x0

    aput-object p2, p3, v0

    const-string p2, "Unable to create call adapter for %s"

    invoke-static {p1, p0, p2, p3}, Lxb/d0;->n(Ljava/lang/reflect/Method;Ljava/lang/Throwable;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/RuntimeException;

    move-result-object p0

    throw p0
.end method

.method private static e(Lxb/z;Ljava/lang/reflect/Method;Ljava/lang/reflect/Type;)Lxb/h;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<ResponseT:",
            "Ljava/lang/Object;",
            ">(",
            "Lxb/z;",
            "Ljava/lang/reflect/Method;",
            "Ljava/lang/reflect/Type;",
            ")",
            "Lxb/h<",
            "Llb/c0;",
            "TResponseT;>;"
        }
    .end annotation

    invoke-virtual {p1}, Ljava/lang/reflect/AccessibleObject;->getAnnotations()[Ljava/lang/annotation/Annotation;

    move-result-object v0

    :try_start_4
    invoke-virtual {p0, p2, v0}, Lxb/z;->h(Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;)Lxb/h;

    move-result-object p0
    :try_end_8
    .catch Ljava/lang/RuntimeException; {:try_start_4 .. :try_end_8} :catch_9

    return-object p0

    :catch_9
    move-exception p0

    const/4 v0, 0x1

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

    const/4 v1, 0x0

    aput-object p2, v0, v1

    const-string p2, "Unable to create converter for %s"

    invoke-static {p1, p0, p2, v0}, Lxb/d0;->n(Ljava/lang/reflect/Method;Ljava/lang/Throwable;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/RuntimeException;

    move-result-object p0

    throw p0
.end method

.method static f(Lxb/z;Ljava/lang/reflect/Method;Lxb/x;)Lxb/m;
    .registers 13
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<ResponseT:",
            "Ljava/lang/Object;",
            "ReturnT:",
            "Ljava/lang/Object;",
            ">(",
            "Lxb/z;",
            "Ljava/lang/reflect/Method;",
            "Lxb/x;",
            ")",
            "Lxb/m<",
            "TResponseT;TReturnT;>;"
        }
    .end annotation

    iget-boolean v0, p2, Lxb/x;->k:Z

    const/4 v6, 0x0

    invoke-virtual {p1}, Ljava/lang/reflect/AccessibleObject;->getAnnotations()[Ljava/lang/annotation/Annotation;

    move-result-object v1

    const-class v2, Lxb/y;

    const/4 v3, 0x0

    if-eqz v0, :cond_3f

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

    move-result-object v4

    array-length v5, v4

    const/4 v7, 0x1

    sub-int/2addr v5, v7

    aget-object v4, v4, v5

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

    invoke-static {v3, v4}, Lxb/d0;->f(ILjava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/Type;

    move-result-object v4

    invoke-static {v4}, Lxb/d0;->h(Ljava/lang/reflect/Type;)Ljava/lang/Class;

    move-result-object v5

    if-ne v5, v2, :cond_2d

    instance-of v5, v4, Ljava/lang/reflect/ParameterizedType;

    if-eqz v5, :cond_2d

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

    invoke-static {v3, v4}, Lxb/d0;->g(ILjava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/Type;

    move-result-object v4

    const/4 v5, 0x1

    goto :goto_2e

    :cond_2d
    const/4 v5, 0x0

    :goto_2e
    new-instance v8, Lxb/d0$b;

    new-array v7, v7, [Ljava/lang/reflect/Type;

    aput-object v4, v7, v3

    const/4 v4, 0x0

    const-class v9, Lxb/b;

    invoke-direct {v8, v4, v9, v7}, Lxb/d0$b;-><init>(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)V

    invoke-static {v1}, Lxb/c0;->a([Ljava/lang/annotation/Annotation;)[Ljava/lang/annotation/Annotation;

    move-result-object v1

    goto :goto_44

    :cond_3f
    invoke-virtual {p1}, Ljava/lang/reflect/Method;->getGenericReturnType()Ljava/lang/reflect/Type;

    move-result-object v8

    const/4 v5, 0x0

    :goto_44
    invoke-static {p0, p1, v8, v1}, Lxb/m;->d(Lxb/z;Ljava/lang/reflect/Method;Ljava/lang/reflect/Type;[Ljava/lang/annotation/Annotation;)Lxb/c;

    move-result-object v7

    invoke-interface {v7}, Lxb/c;->b()Ljava/lang/reflect/Type;

    move-result-object v1

    const-class v4, Llb/b0;

    if-eq v1, v4, :cond_96

    if-eq v1, v2, :cond_8d

    iget-object v2, p2, Lxb/x;->c:Ljava/lang/String;

    const-string v4, "HEAD"

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

    move-result v2

    if-eqz v2, :cond_6e

    const-class v2, Ljava/lang/Void;

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

    move-result v2

    if-eqz v2, :cond_65

    goto :goto_6e

    :cond_65
    const-string p0, "HEAD method must use Void as response type."

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

    invoke-static {p1, p0, p2}, Lxb/d0;->m(Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/RuntimeException;

    move-result-object p0

    throw p0

    :cond_6e
    :goto_6e
    invoke-static {p0, p1, v1}, Lxb/m;->e(Lxb/z;Ljava/lang/reflect/Method;Ljava/lang/reflect/Type;)Lxb/h;

    move-result-object v4

    iget-object v3, p0, Lxb/z;->b:Llb/d$a;

    if-nez v0, :cond_7c

    new-instance p0, Lxb/m$a;

    invoke-direct {p0, p2, v3, v4, v7}, Lxb/m$a;-><init>(Lxb/x;Llb/d$a;Lxb/h;Lxb/c;)V

    return-object p0

    :cond_7c
    if-eqz v5, :cond_84

    new-instance p0, Lxb/m$c;

    invoke-direct {p0, p2, v3, v4, v7}, Lxb/m$c;-><init>(Lxb/x;Llb/d$a;Lxb/h;Lxb/c;)V

    return-object p0

    :cond_84
    new-instance p0, Lxb/m$b;

    move-object v1, p0

    move-object v2, p2

    move-object v5, v7

    invoke-direct/range {v1 .. v6}, Lxb/m$b;-><init>(Lxb/x;Llb/d$a;Lxb/h;Lxb/c;Z)V

    return-object p0

    :cond_8d
    const-string p0, "Response must include generic type (e.g., Response<String>)"

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

    invoke-static {p1, p0, p2}, Lxb/d0;->m(Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/RuntimeException;

    move-result-object p0

    throw p0

    :cond_96
    new-instance p0, Ljava/lang/StringBuilder;

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

    const-string p2, "\'"

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

    invoke-static {v1}, Lxb/d0;->h(Ljava/lang/reflect/Type;)Ljava/lang/Class;

    move-result-object p2

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

    move-result-object p2

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

    const-string p2, "\' is not a valid response body type. Did you mean ResponseBody?"

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

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

    move-result-object p0

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

    invoke-static {p1, p0, p2}, Lxb/d0;->m(Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/RuntimeException;

    move-result-object p0

    throw p0
.end method


# virtual methods
.method final a([Ljava/lang/Object;)Ljava/lang/Object;
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "([",
            "Ljava/lang/Object;",
            ")TReturnT;"
        }
    .end annotation

    new-instance v0, Lxb/p;

    iget-object v1, p0, Lxb/m;->a:Lxb/x;

    iget-object v2, p0, Lxb/m;->b:Llb/d$a;

    iget-object v3, p0, Lxb/m;->c:Lxb/h;

    invoke-direct {v0, v1, p1, v2, v3}, Lxb/p;-><init>(Lxb/x;[Ljava/lang/Object;Llb/d$a;Lxb/h;)V

    invoke-virtual {p0, v0, p1}, Lxb/m;->c(Lxb/b;[Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object p1

    return-object p1
.end method

.method protected abstract c(Lxb/b;[Ljava/lang/Object;)Ljava/lang/Object;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lxb/b<",
            "TResponseT;>;[",
            "Ljava/lang/Object;",
            ")TReturnT;"
        }
    .end annotation
.end method