PatriciaTrie.smali

.class public Lorg/ardverk/collection/PatriciaTrie;
.super Lorg/ardverk/collection/AbstractPatriciaTrie;

# interfaces
.implements Ljava/io/Serializable;


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lorg/ardverk/collection/PatriciaTrie$1;,
        Lorg/ardverk/collection/PatriciaTrie$a;,
        Lorg/ardverk/collection/PatriciaTrie$b;,
        Lorg/ardverk/collection/PatriciaTrie$d;,
        Lorg/ardverk/collection/PatriciaTrie$c;,
        Lorg/ardverk/collection/PatriciaTrie$e;
    }
.end annotation

.annotation system Ldalvik/annotation/Signature;
    value = {
        "<K:",
        "Ljava/lang/Object;",
        "V:",
        "Ljava/lang/Object;",
        ">",
        "Lorg/ardverk/collection/AbstractPatriciaTrie",
        "<TK;TV;>;",
        "Ljava/io/Serializable;"
    }
.end annotation


# static fields
.field private static final serialVersionUID:J = -0x1f2b72767a08dc54L


# direct methods
.method public constructor <init>()V
    .registers 1

    invoke-direct {p0}, Lorg/ardverk/collection/AbstractPatriciaTrie;-><init>()V

    return-void
.end method

.method public constructor <init>(Ldxoptimizer/csm;)V
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ldxoptimizer/csm",
            "<-TK;>;)V"
        }
    .end annotation

    invoke-direct {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;-><init>(Ldxoptimizer/csm;)V

    return-void
.end method

.method public constructor <init>(Ldxoptimizer/csm;Ljava/util/Map;)V
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ldxoptimizer/csm",
            "<-TK;>;",
            "Ljava/util/Map",
            "<+TK;+TV;>;)V"
        }
    .end annotation

    invoke-direct {p0, p1, p2}, Lorg/ardverk/collection/AbstractPatriciaTrie;-><init>(Ldxoptimizer/csm;Ljava/util/Map;)V

    return-void
.end method

.method public constructor <init>(Ljava/util/Map;)V
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/Map",
            "<+TK;+TV;>;)V"
        }
    .end annotation

    invoke-direct {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;-><init>(Ljava/util/Map;)V

    return-void
.end method

.method static synthetic access$1000(Lorg/ardverk/collection/PatriciaTrie;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 4

    invoke-direct {p0, p1, p2}, Lorg/ardverk/collection/PatriciaTrie;->nextEntryInSubtree(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    return-object v0
.end method

.method static synthetic access$200(Lorg/ardverk/collection/PatriciaTrie;Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 3

    invoke-direct {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->higherEntry(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    return-object v0
.end method

.method static synthetic access$300(Lorg/ardverk/collection/PatriciaTrie;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 2

    invoke-direct {p0}, Lorg/ardverk/collection/PatriciaTrie;->lastEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    return-object v0
.end method

.method static synthetic access$500(Lorg/ardverk/collection/PatriciaTrie;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 3

    invoke-direct {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->previousEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    return-object v0
.end method

.method static synthetic access$600(Lorg/ardverk/collection/PatriciaTrie;Ljava/lang/Object;Ljava/lang/Object;)Z
    .registers 4

    invoke-direct {p0, p1, p2}, Lorg/ardverk/collection/PatriciaTrie;->isPrefix(Ljava/lang/Object;Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method static synthetic access$900(Lorg/ardverk/collection/PatriciaTrie;Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 3

    invoke-direct {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->subtree(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    return-object v0
.end method

.method private followRight(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;)",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->right:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    if-nez v0, :cond_6

    const/4 v0, 0x0

    :goto_5
    return-object v0

    :cond_6
    :goto_6
    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->right:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->bitIndex:I

    iget v1, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->bitIndex:I

    if-le v0, v1, :cond_11

    iget-object p1, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->right:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    goto :goto_6

    :cond_11
    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->right:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    goto :goto_5
.end method

.method private higherEntry(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    const/4 v4, 0x1

    const/4 v0, 0x0

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->lengthInBits(Ljava/lang/Object;)I

    move-result v1

    if-nez v1, :cond_22

    iget-object v1, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {v1}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v1

    if-nez v1, :cond_1d

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->size()I

    move-result v1

    if-le v1, v4, :cond_1c

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {p0, v0}, Lorg/ardverk/collection/PatriciaTrie;->nextEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    :cond_1c
    :goto_1c
    return-object v0

    :cond_1d
    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->firstEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_1c

    :cond_22
    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->getNearestEntryForKey(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v1

    iget-object v2, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v2}, Lorg/ardverk/collection/PatriciaTrie;->compareKeys(Ljava/lang/Object;Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_33

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->nextEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_1c

    :cond_33
    iget-object v2, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v2}, Lorg/ardverk/collection/PatriciaTrie;->bitIndex(Ljava/lang/Object;Ljava/lang/Object;)I

    move-result v2

    invoke-static {v2}, Lorg/ardverk/collection/Tries;->d(I)Z

    move-result v3

    if-eqz v3, :cond_58

    new-instance v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-direct {v1, p1, v0, v2}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;I)V

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->addEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->incrementSize()V

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->nextEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->removeEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Ljava/lang/Object;

    iget v1, p0, Lorg/ardverk/collection/PatriciaTrie;->modCount:I

    add-int/lit8 v1, v1, -0x2

    iput v1, p0, Lorg/ardverk/collection/PatriciaTrie;->modCount:I

    goto :goto_1c

    :cond_58
    invoke-static {v2}, Lorg/ardverk/collection/Tries;->c(I)Z

    move-result v3

    if-eqz v3, :cond_7a

    iget-object v1, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {v1}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v1

    if-nez v1, :cond_6b

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->firstEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_1c

    :cond_6b
    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->size()I

    move-result v1

    if-le v1, v4, :cond_1c

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->firstEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    invoke-virtual {p0, v0}, Lorg/ardverk/collection/PatriciaTrie;->nextEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_1c

    :cond_7a
    invoke-static {v2}, Lorg/ardverk/collection/Tries;->b(I)Z

    move-result v0

    if-eqz v0, :cond_85

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->nextEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_1c

    :cond_85
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "invalid lookup: "

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

    move-result-object v1

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

    move-result-object v1

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

    move-result-object v1

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

    throw v0
.end method

.method private isPrefix(Ljava/lang/Object;Ljava/lang/Object;)Z
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;TK;)Z"
        }
    .end annotation

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->keyAnalyzer:Ldxoptimizer/csm;

    invoke-interface {v0, p1, p2}, Ldxoptimizer/csm;->isPrefix(Ljava/lang/Object;Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method private lastEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-direct {p0, v0}, Lorg/ardverk/collection/PatriciaTrie;->followRight(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    return-object v0
.end method

.method private nextEntryInSubtree(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;)",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    if-nez p1, :cond_7

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->firstEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    :goto_6
    return-object v0

    :cond_7
    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->predecessor:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {p0, v0, p1, p2}, Lorg/ardverk/collection/PatriciaTrie;->nextEntryImpl(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_6
.end method

.method private previousEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;)",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    const/4 v1, 0x0

    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->predecessor:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    if-nez v0, :cond_d

    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string v1, "must have come from somewhere!"

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

    throw v0

    :cond_d
    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->predecessor:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->right:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    if-ne v0, p1, :cond_2d

    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->predecessor:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v1, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->predecessor:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-static {v0, v1}, Lorg/ardverk/collection/PatriciaTrie;->isValidUplink(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Z

    move-result v0

    if-eqz v0, :cond_24

    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->predecessor:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    :goto_23
    return-object v0

    :cond_24
    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->predecessor:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-direct {p0, v0}, Lorg/ardverk/collection/PatriciaTrie;->followRight(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_23

    :cond_2d
    iget-object v0, p1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->predecessor:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    :goto_2f
    iget-object v2, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    if-eqz v2, :cond_3c

    iget-object v2, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v2, v2, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    if-ne v0, v2, :cond_3c

    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    goto :goto_2f

    :cond_3c
    iget-object v2, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    if-nez v2, :cond_42

    move-object v0, v1

    goto :goto_23

    :cond_42
    iget-object v2, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v2, v2, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v3, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-static {v2, v3}, Lorg/ardverk/collection/PatriciaTrie;->isValidUplink(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Z

    move-result v2

    if-eqz v2, :cond_68

    iget-object v2, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v2, v2, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v3, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    if-ne v2, v3, :cond_63

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {v0}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v0

    if-eqz v0, :cond_60

    move-object v0, v1

    goto :goto_23

    :cond_60
    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    goto :goto_23

    :cond_63
    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    goto :goto_23

    :cond_68
    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->parent:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v0, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-direct {p0, v0}, Lorg/ardverk/collection/PatriciaTrie;->followRight(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_23
.end method

.method private subtree(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 9
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    const/4 v2, 0x0

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->lengthInBits(Ljava/lang/Object;)I

    move-result v3

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v1, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    :goto_b
    iget v4, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->bitIndex:I

    iget v5, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->bitIndex:I

    if-le v4, v5, :cond_15

    iget v4, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->bitIndex:I

    if-ge v3, v4, :cond_23

    :cond_15
    invoke-virtual {v1}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v4

    if-eqz v4, :cond_37

    :goto_1b
    invoke-virtual {v0}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v1

    if-eqz v1, :cond_39

    move-object v0, v2

    :cond_22
    :goto_22
    return-object v0

    :cond_23
    iget v0, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->bitIndex:I

    invoke-virtual {p0, p1, v0}, Lorg/ardverk/collection/PatriciaTrie;->isBitSet(Ljava/lang/Object;I)Z

    move-result v0

    if-nez v0, :cond_31

    iget-object v0, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->left:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-object v6, v1

    move-object v1, v0

    move-object v0, v6

    goto :goto_b

    :cond_31
    iget-object v0, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->right:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-object v6, v1

    move-object v1, v0

    move-object v0, v6

    goto :goto_b

    :cond_37
    move-object v0, v1

    goto :goto_1b

    :cond_39
    iget-object v1, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    if-ne v0, v1, :cond_49

    invoke-virtual {v0}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->getKey()Ljava/lang/Object;

    move-result-object v1

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->lengthInBits(Ljava/lang/Object;)I

    move-result v1

    if-ge v1, v3, :cond_49

    move-object v0, v2

    goto :goto_22

    :cond_49
    invoke-virtual {p0, p1, v3}, Lorg/ardverk/collection/PatriciaTrie;->isBitSet(Ljava/lang/Object;I)Z

    move-result v1

    iget-object v4, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, v4, v3}, Lorg/ardverk/collection/PatriciaTrie;->isBitSet(Ljava/lang/Object;I)Z

    move-result v4

    if-eq v1, v4, :cond_57

    move-object v0, v2

    goto :goto_22

    :cond_57
    iget-object v1, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v1}, Lorg/ardverk/collection/PatriciaTrie;->bitIndex(Ljava/lang/Object;Ljava/lang/Object;)I

    move-result v1

    if-ltz v1, :cond_22

    if-ge v1, v3, :cond_22

    move-object v0, v2

    goto :goto_22
.end method


# virtual methods
.method ceilingEntry(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->lengthInBits(Ljava/lang/Object;)I

    move-result v0

    if-nez v0, :cond_16

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {v0}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_11

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    :cond_10
    :goto_10
    return-object v0

    :cond_11
    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->firstEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_10

    :cond_16
    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->getNearestEntryForKey(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    iget-object v1, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v1}, Lorg/ardverk/collection/PatriciaTrie;->compareKeys(Ljava/lang/Object;Ljava/lang/Object;)Z

    move-result v1

    if-nez v1, :cond_10

    iget-object v1, v0, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v1}, Lorg/ardverk/collection/PatriciaTrie;->bitIndex(Ljava/lang/Object;Ljava/lang/Object;)I

    move-result v1

    invoke-static {v1}, Lorg/ardverk/collection/Tries;->d(I)Z

    move-result v2

    if-eqz v2, :cond_48

    new-instance v2, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    const/4 v0, 0x0

    invoke-direct {v2, p1, v0, v1}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;I)V

    invoke-virtual {p0, v2}, Lorg/ardverk/collection/PatriciaTrie;->addEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->incrementSize()V

    invoke-virtual {p0, v2}, Lorg/ardverk/collection/PatriciaTrie;->nextEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    invoke-virtual {p0, v2}, Lorg/ardverk/collection/PatriciaTrie;->removeEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Ljava/lang/Object;

    iget v1, p0, Lorg/ardverk/collection/PatriciaTrie;->modCount:I

    add-int/lit8 v1, v1, -0x2

    iput v1, p0, Lorg/ardverk/collection/PatriciaTrie;->modCount:I

    goto :goto_10

    :cond_48
    invoke-static {v1}, Lorg/ardverk/collection/Tries;->c(I)Z

    move-result v2

    if-eqz v2, :cond_5e

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {v0}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_59

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    goto :goto_10

    :cond_59
    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->firstEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_10

    :cond_5e
    invoke-static {v1}, Lorg/ardverk/collection/Tries;->b(I)Z

    move-result v1

    if-nez v1, :cond_10

    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "invalid lookup: "

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

    move-result-object v1

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

    move-result-object v1

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

    move-result-object v1

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

    throw v0
.end method

.method public bridge synthetic clear()V
    .registers 1

    invoke-super {p0}, Lorg/ardverk/collection/AbstractPatriciaTrie;->clear()V

    return-void
.end method

.method public comparator()Ljava/util/Comparator;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/Comparator",
            "<-TK;>;"
        }
    .end annotation

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->keyAnalyzer:Ldxoptimizer/csm;

    return-object v0
.end method

.method public bridge synthetic containsKey(Ljava/lang/Object;)Z
    .registers 3

    invoke-super {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method public bridge synthetic entrySet()Ljava/util/Set;
    .registers 2

    invoke-super {p0}, Lorg/ardverk/collection/AbstractPatriciaTrie;->entrySet()Ljava/util/Set;

    move-result-object v0

    return-object v0
.end method

.method public firstKey()Ljava/lang/Object;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()TK;"
        }
    .end annotation

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->firstEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    invoke-virtual {v0}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->getKey()Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method floorEntry(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    const/4 v0, 0x0

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->lengthInBits(Ljava/lang/Object;)I

    move-result v1

    if-nez v1, :cond_12

    iget-object v1, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {v1}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v1

    if-nez v1, :cond_11

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    :cond_11
    :goto_11
    return-object v0

    :cond_12
    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->getNearestEntryForKey(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v1

    iget-object v2, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v2}, Lorg/ardverk/collection/PatriciaTrie;->compareKeys(Ljava/lang/Object;Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_20

    move-object v0, v1

    goto :goto_11

    :cond_20
    iget-object v2, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v2}, Lorg/ardverk/collection/PatriciaTrie;->bitIndex(Ljava/lang/Object;Ljava/lang/Object;)I

    move-result v2

    invoke-static {v2}, Lorg/ardverk/collection/Tries;->d(I)Z

    move-result v3

    if-eqz v3, :cond_45

    new-instance v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-direct {v1, p1, v0, v2}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;I)V

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->addEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->incrementSize()V

    invoke-direct {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->previousEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->removeEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Ljava/lang/Object;

    iget v1, p0, Lorg/ardverk/collection/PatriciaTrie;->modCount:I

    add-int/lit8 v1, v1, -0x2

    iput v1, p0, Lorg/ardverk/collection/PatriciaTrie;->modCount:I

    goto :goto_11

    :cond_45
    invoke-static {v2}, Lorg/ardverk/collection/Tries;->c(I)Z

    move-result v3

    if-eqz v3, :cond_56

    iget-object v1, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {v1}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->isEmpty()Z

    move-result v1

    if-nez v1, :cond_11

    iget-object v0, p0, Lorg/ardverk/collection/PatriciaTrie;->root:Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    goto :goto_11

    :cond_56
    invoke-static {v2}, Lorg/ardverk/collection/Tries;->b(I)Z

    move-result v0

    if-eqz v0, :cond_5e

    move-object v0, v1

    goto :goto_11

    :cond_5e
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "invalid lookup: "

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

    move-result-object v1

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

    move-result-object v1

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

    move-result-object v1

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

    throw v0
.end method

.method public bridge synthetic get(Ljava/lang/Object;)Ljava/lang/Object;
    .registers 3

    invoke-super {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic getKeyAnalyzer()Ldxoptimizer/csm;
    .registers 2

    invoke-super {p0}, Lorg/ardverk/collection/AbstractPatriciaTrie;->getKeyAnalyzer()Ldxoptimizer/csm;

    move-result-object v0

    return-object v0
.end method

.method public headMap(Ljava/lang/Object;)Ljava/util/SortedMap;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)",
            "Ljava/util/SortedMap",
            "<TK;TV;>;"
        }
    .end annotation

    new-instance v0, Lorg/ardverk/collection/PatriciaTrie$c;

    const/4 v1, 0x0

    invoke-direct {v0, p0, v1, p1}, Lorg/ardverk/collection/PatriciaTrie$c;-><init>(Lorg/ardverk/collection/PatriciaTrie;Ljava/lang/Object;Ljava/lang/Object;)V

    return-object v0
.end method

.method public bridge synthetic keySet()Ljava/util/Set;
    .registers 2

    invoke-super {p0}, Lorg/ardverk/collection/AbstractPatriciaTrie;->keySet()Ljava/util/Set;

    move-result-object v0

    return-object v0
.end method

.method public lastKey()Ljava/lang/Object;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()TK;"
        }
    .end annotation

    invoke-direct {p0}, Lorg/ardverk/collection/PatriciaTrie;->lastEntry()Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    if-eqz v0, :cond_b

    invoke-virtual {v0}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->getKey()Ljava/lang/Object;

    move-result-object v0

    :goto_a
    return-object v0

    :cond_b
    const/4 v0, 0x0

    goto :goto_a
.end method

.method lowerEntry(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)",
            "Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry",
            "<TK;TV;>;"
        }
    .end annotation

    const/4 v0, 0x0

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->lengthInBits(Ljava/lang/Object;)I

    move-result v1

    if-nez v1, :cond_8

    :cond_7
    :goto_7
    return-object v0

    :cond_8
    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->getNearestEntryForKey(Ljava/lang/Object;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v1

    iget-object v2, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v2}, Lorg/ardverk/collection/PatriciaTrie;->compareKeys(Ljava/lang/Object;Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_19

    invoke-direct {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->previousEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_7

    :cond_19
    iget-object v2, v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;->key:Ljava/lang/Object;

    invoke-virtual {p0, p1, v2}, Lorg/ardverk/collection/PatriciaTrie;->bitIndex(Ljava/lang/Object;Ljava/lang/Object;)I

    move-result v2

    invoke-static {v2}, Lorg/ardverk/collection/Tries;->d(I)Z

    move-result v3

    if-eqz v3, :cond_3e

    new-instance v1, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-direct {v1, p1, v0, v2}, Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;I)V

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->addEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    invoke-virtual {p0}, Lorg/ardverk/collection/PatriciaTrie;->incrementSize()V

    invoke-direct {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->previousEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    invoke-virtual {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->removeEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Ljava/lang/Object;

    iget v1, p0, Lorg/ardverk/collection/PatriciaTrie;->modCount:I

    add-int/lit8 v1, v1, -0x2

    iput v1, p0, Lorg/ardverk/collection/PatriciaTrie;->modCount:I

    goto :goto_7

    :cond_3e
    invoke-static {v2}, Lorg/ardverk/collection/Tries;->c(I)Z

    move-result v3

    if-nez v3, :cond_7

    invoke-static {v2}, Lorg/ardverk/collection/Tries;->b(I)Z

    move-result v0

    if-eqz v0, :cond_4f

    invoke-direct {p0, v1}, Lorg/ardverk/collection/PatriciaTrie;->previousEntry(Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;)Lorg/ardverk/collection/AbstractPatriciaTrie$TrieEntry;

    move-result-object v0

    goto :goto_7

    :cond_4f
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "invalid lookup: "

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

    move-result-object v1

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

    move-result-object v1

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

    move-result-object v1

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

    throw v0
.end method

.method public prefixMap(Ljava/lang/Object;)Ljava/util/SortedMap;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)",
            "Ljava/util/SortedMap",
            "<TK;TV;>;"
        }
    .end annotation

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/PatriciaTrie;->lengthInBits(Ljava/lang/Object;)I

    move-result v0

    if-nez v0, :cond_7

    :goto_6
    return-object p0

    :cond_7
    new-instance v0, Lorg/ardverk/collection/PatriciaTrie$b;

    const/4 v1, 0x0

    invoke-direct {v0, p0, p1, v1}, Lorg/ardverk/collection/PatriciaTrie$b;-><init>(Lorg/ardverk/collection/PatriciaTrie;Ljava/lang/Object;Lorg/ardverk/collection/PatriciaTrie$1;)V

    move-object p0, v0

    goto :goto_6
.end method

.method public bridge synthetic put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    .registers 4

    invoke-super {p0, p1, p2}, Lorg/ardverk/collection/AbstractPatriciaTrie;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic remove(Ljava/lang/Object;)Ljava/lang/Object;
    .registers 3

    invoke-super {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic select(Ljava/lang/Object;)Ljava/util/Map$Entry;
    .registers 3

    invoke-super {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;->select(Ljava/lang/Object;)Ljava/util/Map$Entry;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic select(Ljava/lang/Object;Lorg/ardverk/collection/Cursor;)Ljava/util/Map$Entry;
    .registers 4

    invoke-super {p0, p1, p2}, Lorg/ardverk/collection/AbstractPatriciaTrie;->select(Ljava/lang/Object;Lorg/ardverk/collection/Cursor;)Ljava/util/Map$Entry;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic selectKey(Ljava/lang/Object;)Ljava/lang/Object;
    .registers 3

    invoke-super {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;->selectKey(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic selectValue(Ljava/lang/Object;)Ljava/lang/Object;
    .registers 3

    invoke-super {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;->selectValue(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic size()I
    .registers 2

    invoke-super {p0}, Lorg/ardverk/collection/AbstractPatriciaTrie;->size()I

    move-result v0

    return v0
.end method

.method public subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;TK;)",
            "Ljava/util/SortedMap",
            "<TK;TV;>;"
        }
    .end annotation

    new-instance v0, Lorg/ardverk/collection/PatriciaTrie$c;

    invoke-direct {v0, p0, p1, p2}, Lorg/ardverk/collection/PatriciaTrie$c;-><init>(Lorg/ardverk/collection/PatriciaTrie;Ljava/lang/Object;Ljava/lang/Object;)V

    return-object v0
.end method

.method public tailMap(Ljava/lang/Object;)Ljava/util/SortedMap;
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)",
            "Ljava/util/SortedMap",
            "<TK;TV;>;"
        }
    .end annotation

    new-instance v0, Lorg/ardverk/collection/PatriciaTrie$c;

    const/4 v1, 0x0

    invoke-direct {v0, p0, p1, v1}, Lorg/ardverk/collection/PatriciaTrie$c;-><init>(Lorg/ardverk/collection/PatriciaTrie;Ljava/lang/Object;Ljava/lang/Object;)V

    return-object v0
.end method

.method public bridge synthetic toString()Ljava/lang/String;
    .registers 2

    invoke-super {p0}, Lorg/ardverk/collection/AbstractPatriciaTrie;->toString()Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic traverse(Lorg/ardverk/collection/Cursor;)Ljava/util/Map$Entry;
    .registers 3

    invoke-super {p0, p1}, Lorg/ardverk/collection/AbstractPatriciaTrie;->traverse(Lorg/ardverk/collection/Cursor;)Ljava/util/Map$Entry;

    move-result-object v0

    return-object v0
.end method

.method public bridge synthetic values()Ljava/util/Collection;
    .registers 2

    invoke-super {p0}, Lorg/ardverk/collection/AbstractPatriciaTrie;->values()Ljava/util/Collection;

    move-result-object v0

    return-object v0
.end method