MethodKey$Parameters.smali
.class abstract Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lorg/apache/commons/jexl3/internal/introspection/MethodKey;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x409
name = "Parameters"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/lang/Object;"
}
.end annotation
# direct methods
.method private constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public synthetic constructor <init>(Lorg/apache/commons/jexl3/internal/introspection/MethodKey$1;)V
.registers 2
invoke-direct {p0}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;-><init>()V
return-void
.end method
.method public static synthetic access$000(Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;[Ljava/lang/Object;[Ljava/lang/Class;)Ljava/lang/Object;
.registers 3
invoke-direct {p0, p1, p2}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->getMostSpecific([Ljava/lang/Object;[Ljava/lang/Class;)Ljava/lang/Object;
move-result-object p0
return-object p0
.end method
.method private getApplicables([Ljava/lang/Object;[Ljava/lang/Class;)Ljava/util/LinkedList;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"([TT;[",
"Ljava/lang/Class<",
"*>;)",
"Ljava/util/LinkedList<",
"TT;>;"
}
.end annotation
.line 1
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
.line 2
array-length v1, p1
const/4 v2, 0x0
:goto_7
if-ge v2, v1, :cond_17
aget-object v3, p1, v2
.line 3
invoke-direct {p0, v3, p2}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isApplicable(Ljava/lang/Object;[Ljava/lang/Class;)Z
move-result v4
if-eqz v4, :cond_14
.line 4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
:cond_14
add-int/lit8 v2, v2, 0x1
goto :goto_7
:cond_17
return-object v0
.end method
.method private getMostSpecific([Ljava/lang/Object;[Ljava/lang/Class;)Ljava/lang/Object;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"([TT;[",
"Ljava/lang/Class<",
"*>;)TT;"
}
.end annotation
.line 1
invoke-direct {p0, p1, p2}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->getApplicables([Ljava/lang/Object;[Ljava/lang/Class;)Ljava/util/LinkedList;
move-result-object p1
.line 2
invoke-virtual {p1}, Ljava/util/AbstractCollection;->isEmpty()Z
move-result p2
if-eqz p2, :cond_c
const/4 p1, 0x0
return-object p1
.line 3
:cond_c
invoke-virtual {p1}, Ljava/util/LinkedList;->size()I
move-result p2
const/4 v0, 0x1
if-ne p2, v0, :cond_18
.line 4
invoke-virtual {p1}, Ljava/util/LinkedList;->getFirst()Ljava/lang/Object;
move-result-object p1
return-object p1
.line 5
:cond_18
new-instance p2, Ljava/util/LinkedList;
invoke-direct {p2}, Ljava/util/LinkedList;-><init>()V
.line 6
invoke-virtual {p1}, Ljava/util/AbstractCollection;->iterator()Ljava/util/Iterator;
move-result-object p1
:cond_21
:goto_21
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_59
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
.line 7
invoke-virtual {p0, v1}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->getParameterTypes(Ljava/lang/Object;)[Ljava/lang/Class;
move-result-object v2
const/4 v3, 0x0
.line 8
invoke-virtual {p2}, Ljava/util/AbstractCollection;->iterator()Ljava/util/Iterator;
move-result-object v4
:goto_34
if-nez v3, :cond_53
.line 9
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v5
if-eqz v5, :cond_53
.line 10
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v5
.line 11
invoke-virtual {p0, v5}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->getParameterTypes(Ljava/lang/Object;)[Ljava/lang/Class;
move-result-object v5
invoke-direct {p0, v2, v5}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->moreSpecific([Ljava/lang/Class;[Ljava/lang/Class;)I
move-result v5
if-eqz v5, :cond_4f
if-eq v5, v0, :cond_4d
goto :goto_34
:cond_4d
const/4 v3, 0x1
goto :goto_34
.line 12
:cond_4f
invoke-interface {v4}, Ljava/util/Iterator;->remove()V
goto :goto_34
:cond_53
if-nez v3, :cond_21
.line 13
invoke-virtual {p2, v1}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
goto :goto_21
.line 14
:cond_59
invoke-virtual {p2}, Ljava/util/LinkedList;->size()I
move-result p1
if-gt p1, v0, :cond_64
.line 15
invoke-virtual {p2}, Ljava/util/LinkedList;->getFirst()Ljava/lang/Object;
move-result-object p1
return-object p1
.line 16
:cond_64
new-instance p1, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$AmbiguousException;
invoke-direct {p1}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$AmbiguousException;-><init>()V
throw p1
.end method
.method private isApplicable(Ljava/lang/Object;[Ljava/lang/Class;)Z
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;[",
"Ljava/lang/Class<",
"*>;)Z"
}
.end annotation
.line 1
invoke-virtual {p0, p1}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->getParameterTypes(Ljava/lang/Object;)[Ljava/lang/Class;
move-result-object v0
.line 2
array-length v1, v0
array-length v2, p2
const/4 v3, 0x1
const/4 v4, 0x0
if-ne v1, v2, :cond_32
const/4 p1, 0x0
.line 3
:goto_b
array-length v1, p2
if-ge p1, v1, :cond_31
.line 4
aget-object v1, v0, p1
aget-object v2, p2, p1
invoke-direct {p0, v1, v2, v4}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result v1
if-nez v1, :cond_2e
.line 5
array-length v1, p2
sub-int/2addr v1, v3
if-ne p1, v1, :cond_2d
aget-object v1, v0, p1
invoke-virtual {v1}, Ljava/lang/Class;->isArray()Z
move-result v1
if-eqz v1, :cond_2d
.line 6
aget-object v0, v0, p1
aget-object p1, p2, p1
invoke-direct {p0, v0, p1, v3}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result p1
return p1
:cond_2d
return v4
:cond_2e
add-int/lit8 p1, p1, 0x1
goto :goto_b
:cond_31
return v3
.line 7
:cond_32
invoke-virtual {p0, p1}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isVarArgs(Ljava/lang/Object;)Z
move-result p1
if-nez p1, :cond_39
return v4
.line 8
:cond_39
array-length p1, v0
array-length v1, p2
if-le p1, v1, :cond_56
.line 9
array-length p1, v0
array-length v1, p2
sub-int/2addr p1, v1
if-le p1, v3, :cond_43
return v4
:cond_43
const/4 p1, 0x0
.line 10
:goto_44
array-length v1, p2
if-ge p1, v1, :cond_55
.line 11
aget-object v1, v0, p1
aget-object v2, p2, p1
invoke-direct {p0, v1, v2, v4}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result v1
if-nez v1, :cond_52
return v4
:cond_52
add-int/lit8 p1, p1, 0x1
goto :goto_44
:cond_55
return v3
.line 12
:cond_56
array-length p1, v0
if-lez p1, :cond_89
array-length p1, p2
if-lez p1, :cond_89
const/4 p1, 0x0
.line 13
:goto_5d
array-length v1, v0
sub-int/2addr v1, v3
if-ge p1, v1, :cond_6f
.line 14
aget-object v1, v0, p1
aget-object v2, p2, p1
invoke-direct {p0, v1, v2, v4}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result v1
if-nez v1, :cond_6c
return v4
:cond_6c
add-int/lit8 p1, p1, 0x1
goto :goto_5d
.line 15
:cond_6f
array-length p1, v0
sub-int/2addr p1, v3
aget-object p1, v0, p1
invoke-virtual {p1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object p1
.line 16
array-length v0, v0
sub-int/2addr v0, v3
:goto_79
array-length v1, p2
if-ge v0, v1, :cond_88
.line 17
aget-object v1, p2, v0
invoke-direct {p0, p1, v1, v4}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result v1
if-nez v1, :cond_85
return v4
:cond_85
add-int/lit8 v0, v0, 0x1
goto :goto_79
:cond_88
return v3
:cond_89
return v4
.end method
.method private isConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/Class<",
"*>;Z)Z"
}
.end annotation
const-class v0, Ljava/lang/Void;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_9
const/4 p2, 0x0
:cond_9
invoke-static {p1, p2, p3}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey;->isInvocationConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result p1
return p1
.end method
.method private isPrimitive(Ljava/lang/Class;Z)Z
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;Z)Z"
}
.end annotation
const/4 v0, 0x0
if-eqz p1, :cond_1a
.line 1
invoke-virtual {p1}, Ljava/lang/Class;->isPrimitive()Z
move-result v1
const/4 v2, 0x1
if-eqz v1, :cond_b
return v2
:cond_b
if-eqz p2, :cond_1a
.line 2
invoke-virtual {p1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object p1
if-eqz p1, :cond_1a
.line 3
invoke-virtual {p1}, Ljava/lang/Class;->isPrimitive()Z
move-result p1
if-eqz p1, :cond_1a
const/4 v0, 0x1
:cond_1a
return v0
.end method
.method private isStrictConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/Class<",
"*>;Z)Z"
}
.end annotation
const-class v0, Ljava/lang/Void;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_9
const/4 p2, 0x0
:cond_9
invoke-static {p1, p2, p3}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey;->isStrictInvocationConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result p1
return p1
.end method
.method private moreSpecific([Ljava/lang/Class;[Ljava/lang/Class;)I
.registers 12
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Ljava/lang/Class<",
"*>;[",
"Ljava/lang/Class<",
"*>;)I"
}
.end annotation
.line 1
array-length v0, p1
array-length v1, p2
const/4 v2, 0x0
if-le v0, v1, :cond_6
return v2
.line 2
:cond_6
array-length v0, p2
array-length v1, p1
const/4 v3, 0x1
if-le v0, v1, :cond_c
return v3
.line 3
:cond_c
array-length v0, p1
.line 4
array-length v1, p1
sub-int/2addr v1, v3
const/4 v4, 0x0
const/4 v5, 0x0
const/4 v6, 0x0
:goto_12
if-ge v4, v0, :cond_42
.line 5
aget-object v7, p1, v4
aget-object v8, p2, v4
if-eq v7, v8, :cond_3f
if-ne v4, v1, :cond_1e
const/4 v7, 0x1
goto :goto_1f
:cond_1e
const/4 v7, 0x0
:goto_1f
if-nez v5, :cond_2e
.line 6
aget-object v5, p2, v4
aget-object v8, p1, v4
invoke-direct {p0, v5, v8, v7}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isStrictConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result v5
if-eqz v5, :cond_2c
goto :goto_2e
:cond_2c
const/4 v5, 0x0
goto :goto_2f
:cond_2e
:goto_2e
const/4 v5, 0x1
:goto_2f
if-nez v6, :cond_3e
.line 7
aget-object v6, p1, v4
aget-object v8, p2, v4
invoke-direct {p0, v6, v8, v7}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isStrictConvertible(Ljava/lang/Class;Ljava/lang/Class;Z)Z
move-result v6
if-eqz v6, :cond_3c
goto :goto_3e
:cond_3c
const/4 v6, 0x0
goto :goto_3f
:cond_3e
:goto_3e
const/4 v6, 0x1
:cond_3f
:goto_3f
add-int/lit8 v4, v4, 0x1
goto :goto_12
:cond_42
const/4 v4, 0x2
if-eqz v5, :cond_49
if-eqz v6, :cond_48
return v4
:cond_48
return v2
:cond_49
if-eqz v6, :cond_4c
return v3
:cond_4c
const/4 v5, 0x0
const/4 v6, 0x0
:goto_4e
if-ge v5, v0, :cond_6e
if-ne v5, v1, :cond_54
const/4 v7, 0x1
goto :goto_55
:cond_54
const/4 v7, 0x0
.line 8
:goto_55
aget-object v8, p1, v5
invoke-direct {p0, v8, v7}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isPrimitive(Ljava/lang/Class;Z)Z
move-result v8
if-eqz v8, :cond_60
shl-int v8, v3, v5
add-int/2addr v6, v8
.line 9
:cond_60
aget-object v8, p2, v5
invoke-direct {p0, v8, v7}, Lorg/apache/commons/jexl3/internal/introspection/MethodKey$Parameters;->isPrimitive(Ljava/lang/Class;Z)Z
move-result v7
if-eqz v7, :cond_6b
shl-int v7, v3, v5
sub-int/2addr v6, v7
:cond_6b
add-int/lit8 v5, v5, 0x1
goto :goto_4e
:cond_6e
if-lez v6, :cond_71
return v2
:cond_71
if-gez v6, :cond_74
return v3
:cond_74
return v4
.end method
# virtual methods
.method public abstract getParameterTypes(Ljava/lang/Object;)[Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)[",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.end method
.method public abstract isVarArgs(Ljava/lang/Object;)Z
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)Z"
}
.end annotation
.end method