LuaObject.smali

.class public Lcom/luajava/LuaObject;
.super Ljava/lang/Object;


# instance fields
.field protected L:Lcom/luajava/LuaState;

.field protected ref:I


# direct methods
.method protected constructor <init>(Lcom/luajava/LuaObject;Lcom/luajava/LuaObject;)V
    .registers 6

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

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->getLuaState()Lcom/luajava/LuaState;

    move-result-object v0

    invoke-virtual {p2}, Lcom/luajava/LuaObject;->getLuaState()Lcom/luajava/LuaState;

    move-result-object v1

    if-eq v0, v1, :cond_16

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v1, "LuaStates must be the same!"

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

    throw v0

    :cond_16
    invoke-virtual {p1}, Lcom/luajava/LuaObject;->getLuaState()Lcom/luajava/LuaState;

    move-result-object v1

    monitor-enter v1

    :try_start_1b
    invoke-virtual {p1}, Lcom/luajava/LuaObject;->isTable()Z

    move-result v0

    if-nez v0, :cond_33

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->isUserdata()Z

    move-result v0

    if-nez v0, :cond_33

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v2, "Object parent should be a table or userdata ."

    invoke-direct {v0, v2}, Lcom/luajava/LuaException;-><init>(Ljava/lang/String;)V

    throw v0

    :catchall_30
    move-exception v0

    monitor-exit v1
    :try_end_32
    .catchall {:try_start_1b .. :try_end_32} :catchall_30

    throw v0

    :cond_33
    :try_start_33
    invoke-virtual {p1}, Lcom/luajava/LuaObject;->getLuaState()Lcom/luajava/LuaState;

    move-result-object v0

    iput-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->push()V

    invoke-virtual {p2}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x2

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->getTable(I)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x2

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->remove(I)V

    const/4 v0, -0x1

    invoke-virtual {p0, v0}, Lcom/luajava/LuaObject;->registerValue(I)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, 0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1
    :try_end_56
    .catchall {:try_start_33 .. :try_end_56} :catchall_30

    return-void
.end method

.method protected constructor <init>(Lcom/luajava/LuaObject;Ljava/lang/Number;)V
    .registers 7

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

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->getLuaState()Lcom/luajava/LuaState;

    move-result-object v1

    monitor-enter v1

    :try_start_8
    invoke-virtual {p1}, Lcom/luajava/LuaObject;->getLuaState()Lcom/luajava/LuaState;

    move-result-object v0

    iput-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->isTable()Z

    move-result v0

    if-nez v0, :cond_26

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->isUserdata()Z

    move-result v0

    if-nez v0, :cond_26

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v2, "Object parent should be a table or userdata ."

    invoke-direct {v0, v2}, Lcom/luajava/LuaException;-><init>(Ljava/lang/String;)V

    throw v0

    :catchall_23
    move-exception v0

    monitor-exit v1
    :try_end_25
    .catchall {:try_start_8 .. :try_end_25} :catchall_23

    throw v0

    :cond_26
    :try_start_26
    invoke-virtual {p1}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {p2}, Ljava/lang/Number;->doubleValue()D

    move-result-wide v2

    invoke-virtual {v0, v2, v3}, Lcom/luajava/LuaState;->pushNumber(D)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x2

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->getTable(I)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x2

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->remove(I)V

    const/4 v0, -0x1

    invoke-virtual {p0, v0}, Lcom/luajava/LuaObject;->registerValue(I)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, 0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1
    :try_end_49
    .catchall {:try_start_26 .. :try_end_49} :catchall_23

    return-void
.end method

.method protected constructor <init>(Lcom/luajava/LuaObject;Ljava/lang/String;)V
    .registers 6

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

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->getLuaState()Lcom/luajava/LuaState;

    move-result-object v1

    monitor-enter v1

    :try_start_8
    invoke-virtual {p1}, Lcom/luajava/LuaObject;->getLuaState()Lcom/luajava/LuaState;

    move-result-object v0

    iput-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->isTable()Z

    move-result v0

    if-nez v0, :cond_26

    invoke-virtual {p1}, Lcom/luajava/LuaObject;->isUserdata()Z

    move-result v0

    if-nez v0, :cond_26

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v2, "Object parent should be a table or userdata ."

    invoke-direct {v0, v2}, Lcom/luajava/LuaException;-><init>(Ljava/lang/String;)V

    throw v0

    :catchall_23
    move-exception v0

    monitor-exit v1
    :try_end_25
    .catchall {:try_start_8 .. :try_end_25} :catchall_23

    throw v0

    :cond_26
    :try_start_26
    invoke-virtual {p1}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0, p2}, Lcom/luajava/LuaState;->pushString(Ljava/lang/String;)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x2

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->getTable(I)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x2

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->remove(I)V

    const/4 v0, -0x1

    invoke-virtual {p0, v0}, Lcom/luajava/LuaObject;->registerValue(I)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, 0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1
    :try_end_45
    .catchall {:try_start_26 .. :try_end_45} :catchall_23

    return-void
.end method

.method protected constructor <init>(Lcom/luajava/LuaState;I)V
    .registers 4

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

    monitor-enter p1

    :try_start_4
    iput-object p1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {p0, p2}, Lcom/luajava/LuaObject;->registerValue(I)V

    monitor-exit p1

    return-void

    :catchall_b
    move-exception v0

    monitor-exit p1
    :try_end_d
    .catchall {:try_start_4 .. :try_end_d} :catchall_b

    throw v0
.end method

.method protected constructor <init>(Lcom/luajava/LuaState;Ljava/lang/String;)V
    .registers 4

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

    monitor-enter p1

    :try_start_4
    iput-object p1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {p1, p2}, Lcom/luajava/LuaState;->getGlobal(Ljava/lang/String;)I

    const/4 v0, -0x1

    invoke-virtual {p0, v0}, Lcom/luajava/LuaObject;->registerValue(I)V

    const/4 v0, 0x1

    invoke-virtual {p1, v0}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit p1

    return-void

    :catchall_13
    move-exception v0

    monitor-exit p1
    :try_end_15
    .catchall {:try_start_4 .. :try_end_15} :catchall_13

    throw v0
.end method


# virtual methods
.method public asArray()[Ljava/lang/Object;
    .registers 9

    const/4 v1, 0x1

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v2

    :try_start_4
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isTable()Z

    move-result v0

    if-nez v0, :cond_16

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v1, "Invalid object. Not a table ."

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

    throw v0

    :catchall_13
    move-exception v0

    monitor-exit v2
    :try_end_15
    .catchall {:try_start_4 .. :try_end_15} :catchall_13

    throw v0

    :cond_16
    :try_start_16
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, -0x1

    invoke-virtual {v0, v3}, Lcom/luajava/LuaState;->objLen(I)I

    move-result v3

    const-class v0, Ljava/lang/Object;

    invoke-static {v0, v3}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;

    move-result-object v0

    :goto_26
    if-gt v1, v3, :cond_49

    iget-object v4, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    int-to-long v6, v1

    invoke-virtual {v4, v6, v7}, Lcom/luajava/LuaState;->pushInteger(J)V

    iget-object v4, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v5, -0x2

    invoke-virtual {v4, v5}, Lcom/luajava/LuaState;->getTable(I)V

    add-int/lit8 v4, v1, -0x1

    iget-object v5, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v6, -0x1

    invoke-virtual {v5, v6}, Lcom/luajava/LuaState;->toJavaObject(I)Ljava/lang/Object;

    move-result-object v5

    invoke-static {v0, v4, v5}, Ljava/lang/reflect/Array;->set(Ljava/lang/Object;ILjava/lang/Object;)V

    iget-object v4, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v5, 0x1

    invoke-virtual {v4, v5}, Lcom/luajava/LuaState;->pop(I)V

    add-int/lit8 v1, v1, 0x1

    goto :goto_26

    :cond_49
    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v1, v3}, Lcom/luajava/LuaState;->pop(I)V

    check-cast v0, [Ljava/lang/Object;

    check-cast v0, [Ljava/lang/Object;

    monitor-exit v2
    :try_end_54
    .catchall {:try_start_16 .. :try_end_54} :catchall_13

    return-object v0
.end method

.method public varargs call([Ljava/lang/Object;)Ljava/lang/Object;
    .registers 4

    const/4 v0, 0x1

    invoke-virtual {p0, p1, v0}, Lcom/luajava/LuaObject;->callx([Ljava/lang/Object;I)[Ljava/lang/Object;

    move-result-object v0

    const/4 v1, 0x0

    aget-object v0, v0, v1

    return-object v0
.end method

.method public callx([Ljava/lang/Object;I)[Ljava/lang/Object;
    .registers 10

    const/4 v1, 0x0

    const/4 v6, -0x1

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v2

    :try_start_5
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isFunction()Z

    move-result v0

    if-nez v0, :cond_23

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isTable()Z

    move-result v0

    if-nez v0, :cond_23

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isUserdata()Z

    move-result v0

    if-nez v0, :cond_23

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v1, "Invalid object. Not a function, table or userdata ."

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

    throw v0

    :catchall_20
    move-exception v0

    monitor-exit v2
    :try_end_22
    .catchall {:try_start_5 .. :try_end_22} :catchall_20

    throw v0

    :cond_23
    :try_start_23
    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0}, Lcom/luajava/LuaState;->getTop()I

    move-result v3

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    if-eqz p1, :cond_3b

    array-length v0, p1

    :goto_2f
    if-ge v1, v0, :cond_3c

    aget-object v4, p1, v1

    iget-object v5, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v5, v4}, Lcom/luajava/LuaState;->pushObjectValue(Ljava/lang/Object;)V

    add-int/lit8 v1, v1, 0x1

    goto :goto_2f

    :cond_3b
    move v0, v1

    :cond_3c
    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v4, 0x0

    invoke-virtual {v1, v0, p2, v4}, Lcom/luajava/LuaState;->pcall(III)I

    move-result v1

    if-eqz v1, :cond_cc

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, -0x1

    invoke-virtual {v0, v3}, Lcom/luajava/LuaState;->isString(I)Z

    move-result v0

    if-eqz v0, :cond_78

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, -0x1

    invoke-virtual {v0, v3}, Lcom/luajava/LuaState;->toString(I)Ljava/lang/String;

    move-result-object v0

    iget-object v3, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v4, 0x1

    invoke-virtual {v3, v4}, Lcom/luajava/LuaState;->pop(I)V

    :goto_5b
    const/4 v3, 0x2

    if-ne v1, v3, :cond_7c

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v3, "Runtime error. "

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

    move-result-object v1

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

    move-result-object v0

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

    move-result-object v0

    :goto_72
    new-instance v1, Lcom/luajava/LuaException;

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

    throw v1

    :cond_78
    const-string/jumbo v0, ""

    goto :goto_5b

    :cond_7c
    const/4 v3, 0x4

    if-ne v1, v3, :cond_94

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v3, "Memory allocation error. "

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

    move-result-object v1

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

    move-result-object v0

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

    move-result-object v0

    goto :goto_72

    :cond_94
    const/4 v3, 0x6

    if-ne v1, v3, :cond_ac

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v3, "Error while running the error handler function. "

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

    move-result-object v1

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

    move-result-object v0

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

    move-result-object v0

    goto :goto_72

    :cond_ac
    new-instance v3, Ljava/lang/StringBuilder;

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

    const-string/jumbo v4, "Lua Error code "

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

    move-result-object v3

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

    move-result-object v1

    const-string/jumbo v3, ". "

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

    move-result-object v1

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

    move-result-object v0

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

    move-result-object v0

    goto :goto_72

    :cond_cc
    if-ne p2, v6, :cond_101

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0}, Lcom/luajava/LuaState;->getTop()I

    move-result v0

    sub-int/2addr v0, v3

    :goto_d5
    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v1}, Lcom/luajava/LuaState;->getTop()I

    move-result v1

    sub-int/2addr v1, v3

    if-ge v1, v0, :cond_e7

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v1, "Invalid Number of Results ."

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

    throw v0

    :cond_e7
    new-array v1, v0, [Ljava/lang/Object;

    :goto_e9
    if-lez v0, :cond_ff

    add-int/lit8 v3, v0, -0x1

    iget-object v4, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v5, -0x1

    invoke-virtual {v4, v5}, Lcom/luajava/LuaState;->toJavaObject(I)Ljava/lang/Object;

    move-result-object v4

    aput-object v4, v1, v3

    iget-object v3, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v4, 0x1

    invoke-virtual {v3, v4}, Lcom/luajava/LuaState;->pop(I)V

    add-int/lit8 v0, v0, -0x1

    goto :goto_e9

    :cond_ff
    monitor-exit v2
    :try_end_100
    .catchall {:try_start_23 .. :try_end_100} :catchall_20

    return-object v1

    :cond_101
    move v0, p2

    goto :goto_d5
.end method

.method public createProxy(Ljava/lang/Class;)Ljava/lang/Object;
    .registers 6

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isTable()Z

    move-result v0

    if-nez v0, :cond_15

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v2, "Invalid Object. Must be Table."

    invoke-direct {v0, v2}, Lcom/luajava/LuaException;-><init>(Ljava/lang/String;)V

    throw v0

    :catchall_12
    move-exception v0

    monitor-exit v1
    :try_end_14
    .catchall {:try_start_3 .. :try_end_14} :catchall_12

    throw v0

    :cond_15
    const/4 v0, 0x1

    :try_start_16
    new-array v0, v0, [Ljava/lang/Class;

    const/4 v2, 0x0

    aput-object p1, v0, v2

    new-instance v2, Lcom/luajava/LuaInvocationHandler;

    invoke-direct {v2, p0}, Lcom/luajava/LuaInvocationHandler;-><init>(Lcom/luajava/LuaObject;)V

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

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;

    move-result-object v3

    invoke-static {v3, v0, v2}, Ljava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;

    move-result-object v0

    monitor-exit v1
    :try_end_2d
    .catchall {:try_start_16 .. :try_end_2d} :catchall_12

    return-object v0
.end method

.method public createProxy(Ljava/lang/String;)Ljava/lang/Object;
    .registers 7

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isTable()Z

    move-result v0

    if-nez v0, :cond_15

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v2, "Invalid Object. Must be Table."

    invoke-direct {v0, v2}, Lcom/luajava/LuaException;-><init>(Ljava/lang/String;)V

    throw v0

    :catchall_12
    move-exception v0

    monitor-exit v1
    :try_end_14
    .catchall {:try_start_3 .. :try_end_14} :catchall_12

    throw v0

    :cond_15
    :try_start_15
    new-instance v2, Ljava/util/StringTokenizer;

    const-string/jumbo v0, ","

    invoke-direct {v2, p1, v0}, Ljava/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;)V

    invoke-virtual {v2}, Ljava/util/StringTokenizer;->countTokens()I

    move-result v0

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

    const/4 v0, 0x0

    :goto_24
    invoke-virtual {v2}, Ljava/util/StringTokenizer;->hasMoreTokens()Z

    move-result v4

    if-eqz v4, :cond_37

    invoke-virtual {v2}, Ljava/util/StringTokenizer;->nextToken()Ljava/lang/String;

    move-result-object v4

    invoke-static {v4}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;

    move-result-object v4

    aput-object v4, v3, v0

    add-int/lit8 v0, v0, 0x1

    goto :goto_24

    :cond_37
    new-instance v0, Lcom/luajava/LuaInvocationHandler;

    invoke-direct {v0, p0}, Lcom/luajava/LuaInvocationHandler;-><init>(Lcom/luajava/LuaObject;)V

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

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;

    move-result-object v2

    invoke-static {v2, v3, v0}, Ljava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;

    move-result-object v0

    monitor-exit v1
    :try_end_49
    .catchall {:try_start_15 .. :try_end_49} :catchall_12

    return-object v0
.end method

.method public dump()[B
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isFunction()Z

    move-result v0

    if-nez v0, :cond_15

    new-instance v0, Lcom/luajava/LuaException;

    const-string/jumbo v2, "Invalid object. Not a function ."

    invoke-direct {v0, v2}, Lcom/luajava/LuaException;-><init>(Ljava/lang/String;)V

    throw v0

    :catchall_12
    move-exception v0

    monitor-exit v1
    :try_end_14
    .catchall {:try_start_3 .. :try_end_14} :catchall_12

    throw v0

    :cond_15
    :try_start_15
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->dump(I)[B

    move-result-object v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1
    :try_end_26
    .catchall {:try_start_15 .. :try_end_26} :catchall_12

    return-object v0
.end method

.method protected finalize()V
    .registers 7

    :try_start_0
    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1
    :try_end_3
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_3} :catch_1e

    :try_start_3
    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0}, Lcom/luajava/LuaState;->getCPtrPeer()J

    move-result-wide v2

    const-wide/16 v4, 0x0

    cmp-long v0, v2, v4

    if-eqz v0, :cond_19

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const v2, -0xf4628

    iget v3, p0, Lcom/luajava/LuaObject;->ref:I

    invoke-virtual {v0, v2, v3}, Lcom/luajava/LuaState;->LunRef(II)V

    :cond_19
    monitor-exit v1

    :goto_1a
    return-void

    :catchall_1b
    move-exception v0

    monitor-exit v1
    :try_end_1d
    .catchall {:try_start_3 .. :try_end_1d} :catchall_1b

    :try_start_1d
    throw v0
    :try_end_1e
    .catch Ljava/lang/Exception; {:try_start_1d .. :try_end_1e} :catch_1e

    :catch_1e
    move-exception v0

    sget-object v0, Ljava/lang/System;->err:Ljava/io/PrintStream;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v2, "Unable to release object "

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

    move-result-object v1

    iget v2, p0, Lcom/luajava/LuaObject;->ref:I

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

    move-result-object v1

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

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V

    goto :goto_1a
.end method

.method public getBoolean()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->toBoolean(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public getField(Ljava/lang/String;)Lcom/luajava/LuaObject;
    .registers 3

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0, p0, p1}, Lcom/luajava/LuaState;->getLuaObject(Lcom/luajava/LuaObject;Ljava/lang/String;)Lcom/luajava/LuaObject;

    move-result-object v0

    return-object v0
.end method

.method public getI(J)Lcom/luajava/LuaObject;
    .registers 6

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;

    move-result-object v1

    invoke-virtual {v0, p0, v1}, Lcom/luajava/LuaState;->getLuaObject(Lcom/luajava/LuaObject;Ljava/lang/Number;)Lcom/luajava/LuaObject;

    move-result-object v0

    return-object v0
.end method

.method public getLuaState()Lcom/luajava/LuaState;
    .registers 2

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    return-object v0
.end method

.method public getNumber()D
    .registers 6

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->toNumber(I)D

    move-result-wide v2

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v4, 0x1

    invoke-virtual {v0, v4}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return-wide v2

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public getObject()Ljava/lang/Object;
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->getObjectFromUserdata(I)Ljava/lang/Object;

    move-result-object v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return-object v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public getString()Ljava/lang/String;
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->toString(I)Ljava/lang/String;

    move-result-object v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return-object v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isBoolean()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isBoolean(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isFunction()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isFunction(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isJavaFunction()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isJavaFunction(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isJavaObject()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isObject(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isNil()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isNil(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isNumber()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isNumber(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isString()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isString(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isTable()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isTable(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public isUserdata()Z
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->isUserdata(I)Z

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public push()V
    .registers 5

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const v1, -0xf4628

    iget v2, p0, Lcom/luajava/LuaObject;->ref:I

    int-to-long v2, v2

    invoke-virtual {v0, v1, v2, v3}, Lcom/luajava/LuaState;->rawGetI(IJ)I

    return-void
.end method

.method protected registerValue(I)V
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0, p1}, Lcom/luajava/LuaState;->pushValue(I)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const v2, -0xf4628

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->Lref(I)I

    move-result v0

    iput v0, p0, Lcom/luajava/LuaObject;->ref:I

    monitor-exit v1

    return-void

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method

.method public setField(Ljava/lang/String;Ljava/lang/Object;)V
    .registers 5

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    :try_start_3
    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0, p2}, Lcom/luajava/LuaState;->pushObjectValue(Ljava/lang/Object;)V
    :try_end_8
    .catch Lcom/luajava/LuaException; {:try_start_3 .. :try_end_8} :catch_15

    :goto_8
    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v1, -0x2

    invoke-virtual {v0, v1, p1}, Lcom/luajava/LuaState;->setField(ILjava/lang/String;)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v1, 0x1

    invoke-virtual {v0, v1}, Lcom/luajava/LuaState;->pop(I)V

    return-void

    :catch_15
    move-exception v0

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0}, Lcom/luajava/LuaState;->pushNil()V

    goto :goto_8
.end method

.method public setI(JLjava/lang/Object;)V
    .registers 7

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    :try_start_3
    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0, p3}, Lcom/luajava/LuaState;->pushObjectValue(Ljava/lang/Object;)V
    :try_end_8
    .catch Lcom/luajava/LuaException; {:try_start_3 .. :try_end_8} :catch_15

    :goto_8
    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v1, -0x2

    invoke-virtual {v0, v1, p1, p2}, Lcom/luajava/LuaState;->setI(IJ)V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v1, 0x1

    invoke-virtual {v0, v1}, Lcom/luajava/LuaState;->pop(I)V

    return-void

    :catch_15
    move-exception v0

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    invoke-virtual {v0}, Lcom/luajava/LuaState;->pushNil()V

    goto :goto_8
.end method

.method public toString()Ljava/lang/String;
    .registers 5

    const/4 v0, 0x0

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_4
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isNil()Z

    move-result v2

    if-eqz v2, :cond_f

    const-string/jumbo v0, "nil"
    :try_end_d
    .catch Lcom/luajava/LuaException; {:try_start_4 .. :try_end_d} :catch_7c
    .catchall {:try_start_4 .. :try_end_d} :catchall_1f

    :try_start_d
    monitor-exit v1
    :try_end_e
    .catchall {:try_start_d .. :try_end_e} :catchall_1f

    :goto_e
    return-object v0

    :cond_f
    :try_start_f
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isBoolean()Z

    move-result v2

    if-eqz v2, :cond_22

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->getBoolean()Z

    move-result v2

    invoke-static {v2}, Ljava/lang/String;->valueOf(Z)Ljava/lang/String;
    :try_end_1c
    .catch Lcom/luajava/LuaException; {:try_start_f .. :try_end_1c} :catch_7c
    .catchall {:try_start_f .. :try_end_1c} :catchall_1f

    move-result-object v0

    :try_start_1d
    monitor-exit v1

    goto :goto_e

    :catchall_1f
    move-exception v0

    monitor-exit v1
    :try_end_21
    .catchall {:try_start_1d .. :try_end_21} :catchall_1f

    throw v0

    :cond_22
    :try_start_22
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isNumber()Z

    move-result v2

    if-eqz v2, :cond_32

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->getNumber()D

    move-result-wide v2

    invoke-static {v2, v3}, Ljava/lang/String;->valueOf(D)Ljava/lang/String;
    :try_end_2f
    .catch Lcom/luajava/LuaException; {:try_start_22 .. :try_end_2f} :catch_7c
    .catchall {:try_start_22 .. :try_end_2f} :catchall_1f

    move-result-object v0

    :try_start_30
    monitor-exit v1
    :try_end_31
    .catchall {:try_start_30 .. :try_end_31} :catchall_1f

    goto :goto_e

    :cond_32
    :try_start_32
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isString()Z

    move-result v2

    if-eqz v2, :cond_3e

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->getString()Ljava/lang/String;
    :try_end_3b
    .catch Lcom/luajava/LuaException; {:try_start_32 .. :try_end_3b} :catch_7c
    .catchall {:try_start_32 .. :try_end_3b} :catchall_1f

    move-result-object v0

    :try_start_3c
    monitor-exit v1
    :try_end_3d
    .catchall {:try_start_3c .. :try_end_3d} :catchall_1f

    goto :goto_e

    :cond_3e
    :try_start_3e
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isFunction()Z

    move-result v2

    if-eqz v2, :cond_49

    const-string/jumbo v0, "Lua Function"
    :try_end_47
    .catch Lcom/luajava/LuaException; {:try_start_3e .. :try_end_47} :catch_7c
    .catchall {:try_start_3e .. :try_end_47} :catchall_1f

    :try_start_47
    monitor-exit v1
    :try_end_48
    .catchall {:try_start_47 .. :try_end_48} :catchall_1f

    goto :goto_e

    :cond_49
    :try_start_49
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isJavaObject()Z

    move-result v2

    if-eqz v2, :cond_59

    invoke-virtual {p0}, Lcom/luajava/LuaObject;->getObject()Ljava/lang/Object;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/Object;->toString()Ljava/lang/String;
    :try_end_56
    .catch Lcom/luajava/LuaException; {:try_start_49 .. :try_end_56} :catch_7c
    .catchall {:try_start_49 .. :try_end_56} :catchall_1f

    move-result-object v0

    :try_start_57
    monitor-exit v1
    :try_end_58
    .catchall {:try_start_57 .. :try_end_58} :catchall_1f

    goto :goto_e

    :cond_59
    :try_start_59
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isUserdata()Z

    move-result v2

    if-eqz v2, :cond_64

    const-string/jumbo v0, "Userdata"
    :try_end_62
    .catch Lcom/luajava/LuaException; {:try_start_59 .. :try_end_62} :catch_7c
    .catchall {:try_start_59 .. :try_end_62} :catchall_1f

    :try_start_62
    monitor-exit v1
    :try_end_63
    .catchall {:try_start_62 .. :try_end_63} :catchall_1f

    goto :goto_e

    :cond_64
    :try_start_64
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isTable()Z

    move-result v2

    if-eqz v2, :cond_6f

    const-string/jumbo v0, "Lua Table"
    :try_end_6d
    .catch Lcom/luajava/LuaException; {:try_start_64 .. :try_end_6d} :catch_7c
    .catchall {:try_start_64 .. :try_end_6d} :catchall_1f

    :try_start_6d
    monitor-exit v1
    :try_end_6e
    .catchall {:try_start_6d .. :try_end_6e} :catchall_1f

    goto :goto_e

    :cond_6f
    :try_start_6f
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->isJavaFunction()Z

    move-result v2

    if-eqz v2, :cond_7a

    const-string/jumbo v0, "Java Function"
    :try_end_78
    .catch Lcom/luajava/LuaException; {:try_start_6f .. :try_end_78} :catch_7c
    .catchall {:try_start_6f .. :try_end_78} :catchall_1f

    :try_start_78
    monitor-exit v1

    goto :goto_e

    :cond_7a
    monitor-exit v1

    goto :goto_e

    :catch_7c
    move-exception v2

    monitor-exit v1
    :try_end_7e
    .catchall {:try_start_78 .. :try_end_7e} :catchall_1f

    goto :goto_e
.end method

.method public type()I
    .registers 5

    iget-object v1, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    monitor-enter v1

    :try_start_3
    invoke-virtual {p0}, Lcom/luajava/LuaObject;->push()V

    iget-object v0, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v2, -0x1

    invoke-virtual {v0, v2}, Lcom/luajava/LuaState;->type(I)I

    move-result v0

    iget-object v2, p0, Lcom/luajava/LuaObject;->L:Lcom/luajava/LuaState;

    const/4 v3, 0x1

    invoke-virtual {v2, v3}, Lcom/luajava/LuaState;->pop(I)V

    monitor-exit v1

    return v0

    :catchall_15
    move-exception v0

    monitor-exit v1
    :try_end_17
    .catchall {:try_start_3 .. :try_end_17} :catchall_15

    throw v0
.end method