Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / java / util / TreeMap.js
index 615a14f..9f65055 100644 (file)
-Clazz.load(["java.util.AbstractCollection","$.AbstractMap","$.AbstractSet","$.Iterator","$.MapEntry","$.Set","$.SortedMap"],"java.util.TreeMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.util.ConcurrentModificationException","$.NoSuchElementException"],function(){\r
-c$=Clazz.decorateAsClass(function(){\r
-this.$size=0;\r
-this.root=null;\r
-this.$comparator=null;\r
-this.modCount=0;\r
-this.$entrySet=null;\r
-Clazz.instantialize(this,arguments);\r
-},java.util,"TreeMap",java.util.AbstractMap,[java.util.SortedMap,Cloneable,java.io.Serializable]);\r
-c$.toComparable=Clazz.defineMethod(c$,"toComparable",\r
-($fz=function(obj){\r
-return obj;\r
-},$fz.isPrivate=true,$fz),"~O");\r
-Clazz.makeConstructor(c$,\r
-function(comparator){\r
-Clazz.superConstructor(this,java.util.TreeMap,[]);\r
-this.$comparator=comparator;\r
-},"java.util.Comparator");\r
-Clazz.makeConstructor(c$,\r
-function(map){\r
-this.construct();\r
-this.putAll(map);\r
-},"java.util.Map");\r
-Clazz.makeConstructor(c$,\r
-function(map){\r
-this.construct(map.comparator());\r
-var it=map.entrySet().iterator();\r
-if(it.hasNext()){\r
-var entry=it.next();\r
-var last=new java.util.TreeMap.Entry(entry.getKey(),entry.getValue());\r
-this.root=last;\r
-this.$size=1;\r
-while(it.hasNext()){\r
-entry=it.next();\r
-var x=new java.util.TreeMap.Entry(entry.getKey(),entry.getValue());\r
-x.parent=last;\r
-last.right=x;\r
-this.$size++;\r
-this.balance(x);\r
-last=x;\r
-}\r
-}},"java.util.SortedMap");\r
-Clazz.defineMethod(c$,"balance",\r
-function(x){\r
-var y;\r
-x.color=true;\r
-while(x!==this.root&&x.parent.color){\r
-if(x.parent===x.parent.parent.left){\r
-y=x.parent.parent.right;\r
-if(y!=null&&y.color){\r
-x.parent.color=false;\r
-y.color=false;\r
-x.parent.parent.color=true;\r
-x=x.parent.parent;\r
-}else{\r
-if(x===x.parent.right){\r
-x=x.parent;\r
-this.leftRotate(x);\r
-}x.parent.color=false;\r
-x.parent.parent.color=true;\r
-this.rightRotate(x.parent.parent);\r
-}}else{\r
-y=x.parent.parent.left;\r
-if(y!=null&&y.color){\r
-x.parent.color=false;\r
-y.color=false;\r
-x.parent.parent.color=true;\r
-x=x.parent.parent;\r
-}else{\r
-if(x===x.parent.left){\r
-x=x.parent;\r
-this.rightRotate(x);\r
-}x.parent.color=false;\r
-x.parent.parent.color=true;\r
-this.leftRotate(x.parent.parent);\r
-}}}\r
-this.root.color=false;\r
-},"java.util.TreeMap.Entry");\r
-Clazz.overrideMethod(c$,"clear",\r
-function(){\r
-this.root=null;\r
-this.$size=0;\r
-this.modCount++;\r
-});\r
-Clazz.defineMethod(c$,"clone",\r
-function(){\r
-try{\r
-var clone=Clazz.superCall(this,java.util.TreeMap,"clone",[]);\r
-clone.$entrySet=null;\r
-if(this.root!=null){\r
-clone.root=this.root.clone(null);\r
-}return clone;\r
-}catch(e){\r
-if(Clazz.instanceOf(e,CloneNotSupportedException)){\r
-return null;\r
-}else{\r
-throw e;\r
-}\r
-}\r
-});\r
-Clazz.overrideMethod(c$,"comparator",\r
-function(){\r
-return this.$comparator;\r
-});\r
-Clazz.overrideMethod(c$,"containsKey",\r
-function(key){\r
-return this.find(key)!=null;\r
-},"~O");\r
-Clazz.defineMethod(c$,"containsValue",\r
-function(value){\r
-if(this.root!=null){\r
-return this.containsValue(this.root,value);\r
-}return false;\r
-},"~O");\r
-Clazz.defineMethod(c$,"containsValue",\r
-($fz=function(node,value){\r
-if(value==null?node.value==null:value.equals(node.value)){\r
-return true;\r
-}if(node.left!=null){\r
-if(this.containsValue(node.left,value)){\r
-return true;\r
-}}if(node.right!=null){\r
-if(this.containsValue(node.right,value)){\r
-return true;\r
-}}return false;\r
-},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry,~O");\r
-Clazz.overrideMethod(c$,"entrySet",\r
-function(){\r
-if(this.$entrySet==null){\r
-this.$entrySet=((Clazz.isClassDefined("java.util.TreeMap$1")?0:java.util.TreeMap.$TreeMap$1$()),Clazz.innerTypeInstance(java.util.TreeMap$1,this,null));\r
-}return this.$entrySet;\r
-});\r
-Clazz.defineMethod(c$,"find",\r
-($fz=function(keyObj){\r
-var result;\r
-var key=keyObj;\r
-var object=null;\r
-if(this.$comparator==null){\r
-object=java.util.TreeMap.toComparable(key);\r
-}var x=this.root;\r
-while(x!=null){\r
-result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);\r
-if(result==0){\r
-return x;\r
-}x=result<0?x.left:x.right;\r
-}\r
-return null;\r
-},$fz.isPrivate=true,$fz),"~O");\r
-Clazz.defineMethod(c$,"findAfter",\r
-function(keyObj){\r
-var key=keyObj;\r
-var result;\r
-var object=null;\r
-if(this.$comparator==null){\r
-object=java.util.TreeMap.toComparable(key);\r
-}var x=this.root;\r
-var last=null;\r
-while(x!=null){\r
-result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);\r
-if(result==0){\r
-return x;\r
-}if(result<0){\r
-last=x;\r
-x=x.left;\r
-}else{\r
-x=x.right;\r
-}}\r
-return last;\r
-},"~O");\r
-Clazz.defineMethod(c$,"findBefore",\r
-function(key){\r
-var result;\r
-var object=null;\r
-if(this.$comparator==null){\r
-object=java.util.TreeMap.toComparable(key);\r
-}var x=this.root;\r
-var last=null;\r
-while(x!=null){\r
-result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);\r
-if(result<=0){\r
-x=x.left;\r
-}else{\r
-last=x;\r
-x=x.right;\r
-}}\r
-return last;\r
-},"~O");\r
-Clazz.overrideMethod(c$,"firstKey",\r
-function(){\r
-if(this.root!=null){\r
-return java.util.TreeMap.minimum(this.root).key;\r
-}throw new java.util.NoSuchElementException();\r
-});\r
-Clazz.defineMethod(c$,"fixup",\r
-($fz=function(x){\r
-var w;\r
-while(x!==this.root&&!x.color){\r
-if(x===x.parent.left){\r
-w=x.parent.right;\r
-if(w==null){\r
-x=x.parent;\r
-continue;}if(w.color){\r
-w.color=false;\r
-x.parent.color=true;\r
-this.leftRotate(x.parent);\r
-w=x.parent.right;\r
-if(w==null){\r
-x=x.parent;\r
-continue;}}if((w.left==null||!w.left.color)&&(w.right==null||!w.right.color)){\r
-w.color=true;\r
-x=x.parent;\r
-}else{\r
-if(w.right==null||!w.right.color){\r
-w.left.color=false;\r
-w.color=true;\r
-this.rightRotate(w);\r
-w=x.parent.right;\r
-}w.color=x.parent.color;\r
-x.parent.color=false;\r
-w.right.color=false;\r
-this.leftRotate(x.parent);\r
-x=this.root;\r
-}}else{\r
-w=x.parent.left;\r
-if(w==null){\r
-x=x.parent;\r
-continue;}if(w.color){\r
-w.color=false;\r
-x.parent.color=true;\r
-this.rightRotate(x.parent);\r
-w=x.parent.left;\r
-if(w==null){\r
-x=x.parent;\r
-continue;}}if((w.left==null||!w.left.color)&&(w.right==null||!w.right.color)){\r
-w.color=true;\r
-x=x.parent;\r
-}else{\r
-if(w.left==null||!w.left.color){\r
-w.right.color=false;\r
-w.color=true;\r
-this.leftRotate(w);\r
-w=x.parent.left;\r
-}w.color=x.parent.color;\r
-x.parent.color=false;\r
-w.left.color=false;\r
-this.rightRotate(x.parent);\r
-x=this.root;\r
-}}}\r
-x.color=false;\r
-},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");\r
-Clazz.overrideMethod(c$,"get",\r
-function(key){\r
-var node=this.find(key);\r
-if(node!=null){\r
-return node.value;\r
-}return null;\r
-},"~O");\r
-Clazz.overrideMethod(c$,"headMap",\r
-function(endKey){\r
-if(this.$comparator==null){\r
-java.util.TreeMap.toComparable(endKey).compareTo(endKey);\r
-}else{\r
-this.$comparator.compare(endKey,endKey);\r
-}return new java.util.TreeMap.SubMap(this,endKey);\r
-},"~O");\r
-Clazz.overrideMethod(c$,"keySet",\r
-function(){\r
-if(this.$keySet==null){\r
-this.$keySet=((Clazz.isClassDefined("java.util.TreeMap$2")?0:java.util.TreeMap.$TreeMap$2$()),Clazz.innerTypeInstance(java.util.TreeMap$2,this,null));\r
-}return this.$keySet;\r
-});\r
-Clazz.overrideMethod(c$,"lastKey",\r
-function(){\r
-if(this.root!=null){\r
-return java.util.TreeMap.maximum(this.root).key;\r
-}throw new java.util.NoSuchElementException();\r
-});\r
-Clazz.defineMethod(c$,"leftRotate",\r
-($fz=function(x){\r
-var y=x.right;\r
-x.right=y.left;\r
-if(y.left!=null){\r
-y.left.parent=x;\r
-}y.parent=x.parent;\r
-if(x.parent==null){\r
-this.root=y;\r
-}else{\r
-if(x===x.parent.left){\r
-x.parent.left=y;\r
-}else{\r
-x.parent.right=y;\r
-}}y.left=x;\r
-x.parent=y;\r
-},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");\r
-c$.maximum=Clazz.defineMethod(c$,"maximum",\r
-function(x){\r
-while(x.right!=null){\r
-x=x.right;\r
-}\r
-return x;\r
-},"java.util.TreeMap.Entry");\r
-c$.minimum=Clazz.defineMethod(c$,"minimum",\r
-function(x){\r
-while(x.left!=null){\r
-x=x.left;\r
-}\r
-return x;\r
-},"java.util.TreeMap.Entry");\r
-c$.predecessor=Clazz.defineMethod(c$,"predecessor",\r
-function(x){\r
-if(x.left!=null){\r
-return java.util.TreeMap.maximum(x.left);\r
-}var y=x.parent;\r
-while(y!=null&&x===y.left){\r
-x=y;\r
-y=y.parent;\r
-}\r
-return y;\r
-},"java.util.TreeMap.Entry");\r
-Clazz.overrideMethod(c$,"put",\r
-function(key,value){\r
-var entry=this.rbInsert(key);\r
-var result=entry.value;\r
-entry.value=value;\r
-return result;\r
-},"~O,~O");\r
-Clazz.defineMethod(c$,"rbDelete",\r
-function(z){\r
-var y=z.left==null||z.right==null?z:java.util.TreeMap.successor(z);\r
-var x=y.left!=null?y.left:y.right;\r
-if(x!=null){\r
-x.parent=y.parent;\r
-}if(y.parent==null){\r
-this.root=x;\r
-}else if(y===y.parent.left){\r
-y.parent.left=x;\r
-}else{\r
-y.parent.right=x;\r
-}this.modCount++;\r
-if(y!==z){\r
-z.key=y.key;\r
-z.value=y.value;\r
-}if(!y.color&&this.root!=null){\r
-if(x==null){\r
-this.fixup(y.parent);\r
-}else{\r
-this.fixup(x);\r
-}}this.$size--;\r
-},"java.util.TreeMap.Entry");\r
-Clazz.defineMethod(c$,"rbInsert",\r
-($fz=function(object){\r
-var result=0;\r
-var y=null;\r
-if(this.$size!=0){\r
-var key=null;\r
-if(this.$comparator==null){\r
-key=java.util.TreeMap.toComparable(object);\r
-}var x=this.root;\r
-while(x!=null){\r
-y=x;\r
-result=key!=null?key.compareTo(x.key):this.$comparator.compare(object,x.key);\r
-if(result==0){\r
-return x;\r
-}x=result<0?x.left:x.right;\r
-}\r
-}this.$size++;\r
-this.modCount++;\r
-var z=new java.util.TreeMap.Entry(object);\r
-if(y==null){\r
-return this.root=z;\r
-}z.parent=y;\r
-if(result<0){\r
-y.left=z;\r
-}else{\r
-y.right=z;\r
-}this.balance(z);\r
-return z;\r
-},$fz.isPrivate=true,$fz),"~O");\r
-Clazz.overrideMethod(c$,"remove",\r
-function(key){\r
-var node=this.find(key);\r
-if(node==null){\r
-return null;\r
-}var result=node.value;\r
-this.rbDelete(node);\r
-return result;\r
-},"~O");\r
-Clazz.defineMethod(c$,"rightRotate",\r
-($fz=function(x){\r
-var y=x.left;\r
-x.left=y.right;\r
-if(y.right!=null){\r
-y.right.parent=x;\r
-}y.parent=x.parent;\r
-if(x.parent==null){\r
-this.root=y;\r
-}else{\r
-if(x===x.parent.right){\r
-x.parent.right=y;\r
-}else{\r
-x.parent.left=y;\r
-}}y.right=x;\r
-x.parent=y;\r
-},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");\r
-Clazz.overrideMethod(c$,"size",\r
-function(){\r
-return this.$size;\r
-});\r
-Clazz.overrideMethod(c$,"subMap",\r
-function(startKey,endKey){\r
-if(this.$comparator==null){\r
-if(java.util.TreeMap.toComparable(startKey).compareTo(endKey)<=0){\r
-return new java.util.TreeMap.SubMap(startKey,this,endKey);\r
-}}else{\r
-if(this.$comparator.compare(startKey,endKey)<=0){\r
-return new java.util.TreeMap.SubMap(startKey,this,endKey);\r
-}}throw new IllegalArgumentException();\r
-},"~O,~O");\r
-c$.successor=Clazz.defineMethod(c$,"successor",\r
-function(x){\r
-if(x.right!=null){\r
-return java.util.TreeMap.minimum(x.right);\r
-}var y=x.parent;\r
-while(y!=null&&x===y.right){\r
-x=y;\r
-y=y.parent;\r
-}\r
-return y;\r
-},"java.util.TreeMap.Entry");\r
-Clazz.overrideMethod(c$,"tailMap",\r
-function(startKey){\r
-if(this.$comparator==null){\r
-java.util.TreeMap.toComparable(startKey).compareTo(startKey);\r
-}else{\r
-this.$comparator.compare(startKey,startKey);\r
-}return new java.util.TreeMap.SubMap(startKey,this);\r
-},"~O");\r
-Clazz.overrideMethod(c$,"values",\r
-function(){\r
-if(this.valuesCollection==null){\r
-this.valuesCollection=((Clazz.isClassDefined("java.util.TreeMap$3")?0:java.util.TreeMap.$TreeMap$3$()),Clazz.innerTypeInstance(java.util.TreeMap$3,this,null));\r
-}return this.valuesCollection;\r
-});\r
-c$.$TreeMap$1$=function(){\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareAnonymous(java.util,"TreeMap$1",java.util.AbstractSet);\r
-Clazz.overrideMethod(c$,"size",\r
-function(){\r
-return this.b$["java.util.TreeMap"].$size;\r
-});\r
-Clazz.overrideMethod(c$,"clear",\r
-function(){\r
-this.b$["java.util.TreeMap"].clear();\r
-});\r
-Clazz.overrideMethod(c$,"contains",\r
-function(object){\r
-if(Clazz.instanceOf(object,java.util.Map.Entry)){\r
-var entry=object;\r
-var v1=this.b$["java.util.TreeMap"].get(entry.getKey());\r
-var v2=entry.getValue();\r
-return v1==null?v2==null:v1.equals(v2);\r
-}return false;\r
-},"~O");\r
-Clazz.defineMethod(c$,"iterator",\r
-function(){\r
-return new java.util.TreeMap.UnboundedEntryIterator(this.b$["java.util.TreeMap"]);\r
-});\r
-c$=Clazz.p0p();\r
-};\r
-c$.$TreeMap$2$=function(){\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareAnonymous(java.util,"TreeMap$2",java.util.AbstractSet);\r
-Clazz.overrideMethod(c$,"contains",\r
-function(object){\r
-return this.b$["java.util.TreeMap"].containsKey(object);\r
-},"~O");\r
-Clazz.overrideMethod(c$,"size",\r
-function(){\r
-return this.b$["java.util.TreeMap"].$size;\r
-});\r
-Clazz.overrideMethod(c$,"clear",\r
-function(){\r
-this.b$["java.util.TreeMap"].clear();\r
-});\r
-Clazz.overrideMethod(c$,"iterator",\r
-function(){\r
-return new java.util.TreeMap.UnboundedKeyIterator(this.b$["java.util.TreeMap"]);\r
-});\r
-c$=Clazz.p0p();\r
-};\r
-c$.$TreeMap$3$=function(){\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareAnonymous(java.util,"TreeMap$3",java.util.AbstractCollection);\r
-Clazz.overrideMethod(c$,"contains",\r
-function(object){\r
-return this.b$["java.util.TreeMap"].containsValue(object);\r
-},"~O");\r
-Clazz.overrideMethod(c$,"size",\r
-function(){\r
-return this.b$["java.util.TreeMap"].$size;\r
-});\r
-Clazz.overrideMethod(c$,"clear",\r
-function(){\r
-this.b$["java.util.TreeMap"].clear();\r
-});\r
-Clazz.overrideMethod(c$,"iterator",\r
-function(){\r
-return new java.util.TreeMap.UnboundedValueIterator(this.b$["java.util.TreeMap"]);\r
-});\r
-c$=Clazz.p0p();\r
-};\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.decorateAsClass(function(){\r
-this.parent=null;\r
-this.left=null;\r
-this.right=null;\r
-this.color=false;\r
-Clazz.instantialize(this,arguments);\r
-},java.util.TreeMap,"Entry",java.util.MapEntry);\r
-Clazz.defineMethod(c$,"clone",\r
-function(a){\r
-var b=Clazz.superCall(this,java.util.TreeMap.Entry,"clone",[]);\r
-b.parent=a;\r
-if(this.left!=null){\r
-b.left=this.left.clone(b);\r
-}if(this.right!=null){\r
-b.right=this.right.clone(b);\r
-}return b;\r
-},"java.util.TreeMap.Entry");\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.decorateAsClass(function(){\r
-this.backingMap=null;\r
-this.expectedModCount=0;\r
-this.node=null;\r
-this.lastNode=null;\r
-Clazz.instantialize(this,arguments);\r
-},java.util.TreeMap,"AbstractMapIterator");\r
-Clazz.makeConstructor(c$,\r
-function(a,b){\r
-this.backingMap=a;\r
-this.expectedModCount=a.modCount;\r
-this.node=b;\r
-},"java.util.TreeMap,java.util.TreeMap.Entry");\r
-Clazz.defineMethod(c$,"hasNext",\r
-function(){\r
-return this.node!=null;\r
-});\r
-Clazz.defineMethod(c$,"remove",\r
-function(){\r
-if(this.expectedModCount==this.backingMap.modCount){\r
-if(this.lastNode!=null){\r
-this.backingMap.rbDelete(this.lastNode);\r
-this.lastNode=null;\r
-this.expectedModCount++;\r
-}else{\r
-throw new IllegalStateException();\r
-}}else{\r
-throw new java.util.ConcurrentModificationException();\r
-}});\r
-Clazz.defineMethod(c$,"makeNext",\r
-function(){\r
-if(this.expectedModCount!=this.backingMap.modCount){\r
-throw new java.util.ConcurrentModificationException();\r
-}else if(this.node==null){\r
-throw new java.util.NoSuchElementException();\r
-}this.lastNode=this.node;\r
-this.node=java.util.TreeMap.successor(this.node);\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"UnboundedEntryIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);\r
-Clazz.makeConstructor(c$,\r
-function(a){\r
-Clazz.superConstructor(this,java.util.TreeMap.UnboundedEntryIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);\r
-},"java.util.TreeMap");\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-return this.lastNode;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"UnboundedKeyIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);\r
-Clazz.makeConstructor(c$,\r
-function(a){\r
-Clazz.superConstructor(this,java.util.TreeMap.UnboundedKeyIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);\r
-},"java.util.TreeMap");\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-return this.lastNode.key;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"UnboundedValueIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);\r
-Clazz.makeConstructor(c$,\r
-function(a){\r
-Clazz.superConstructor(this,java.util.TreeMap.UnboundedValueIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);\r
-},"java.util.TreeMap");\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-return this.lastNode.value;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.decorateAsClass(function(){\r
-this.endKey=null;\r
-this.cmp=null;\r
-Clazz.instantialize(this,arguments);\r
-},java.util.TreeMap,"ComparatorBoundedIterator",java.util.TreeMap.AbstractMapIterator);\r
-Clazz.makeConstructor(c$,\r
-function(a,b,c){\r
-Clazz.superConstructor(this,java.util.TreeMap.ComparatorBoundedIterator,[a,b]);\r
-this.endKey=c;\r
-this.cmp=a.comparator();\r
-},"java.util.TreeMap,java.util.TreeMap.Entry,~O");\r
-Clazz.defineMethod(c$,"cleanNext",\r
-function(){\r
-if(this.node!=null&&this.cmp.compare(this.endKey,this.node.key)<=0){\r
-this.node=null;\r
-}});\r
-Clazz.overrideMethod(c$,"hasNext",\r
-function(){\r
-return(this.node!=null&&this.endKey!=null)&&(this.cmp.compare(this.node.key,this.endKey)<0);\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"ComparatorBoundedEntryIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-this.cleanNext();\r
-return this.lastNode;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"ComparatorBoundedKeyIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-this.cleanNext();\r
-return this.lastNode.key;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"ComparatorBoundedValueIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-this.cleanNext();\r
-return this.lastNode.value;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.decorateAsClass(function(){\r
-this.endKey=null;\r
-Clazz.instantialize(this,arguments);\r
-},java.util.TreeMap,"ComparableBoundedIterator",java.util.TreeMap.AbstractMapIterator);\r
-Clazz.makeConstructor(c$,\r
-function(a,b,c){\r
-Clazz.superConstructor(this,java.util.TreeMap.ComparableBoundedIterator,[a,b]);\r
-this.endKey=c;\r
-},"java.util.TreeMap,java.util.TreeMap.Entry,Comparable");\r
-Clazz.defineMethod(c$,"cleanNext",\r
-function(){\r
-if((this.node!=null)&&(this.endKey.compareTo(this.node.key)<=0)){\r
-this.node=null;\r
-}});\r
-Clazz.overrideMethod(c$,"hasNext",\r
-function(){\r
-return(this.node!=null)&&(this.endKey.compareTo(this.node.key)>0);\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"ComparableBoundedEntryIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-this.cleanNext();\r
-return this.lastNode;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"ComparableBoundedKeyIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-this.cleanNext();\r
-return this.lastNode.key;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.declareType(java.util.TreeMap,"ComparableBoundedValueIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);\r
-Clazz.overrideMethod(c$,"next",\r
-function(){\r
-this.makeNext();\r
-this.cleanNext();\r
-return this.lastNode.value;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.decorateAsClass(function(){\r
-this.backingMap=null;\r
-this.hasStart=false;\r
-this.hasEnd=false;\r
-this.startKey=null;\r
-this.endKey=null;\r
-this.$entrySet=null;\r
-Clazz.instantialize(this,arguments);\r
-},java.util.TreeMap,"SubMap",java.util.AbstractMap,[java.util.SortedMap,java.io.Serializable]);\r
-Clazz.makeConstructor(c$,\r
-function(a,b){\r
-Clazz.superConstructor(this,java.util.TreeMap.SubMap,[]);\r
-this.backingMap=b;\r
-this.hasStart=true;\r
-this.startKey=a;\r
-},"~O,java.util.TreeMap");\r
-Clazz.makeConstructor(c$,\r
-function(a,b,c){\r
-Clazz.superConstructor(this,java.util.TreeMap.SubMap,[]);\r
-this.backingMap=b;\r
-this.hasStart=this.hasEnd=true;\r
-this.startKey=a;\r
-this.endKey=c;\r
-},"~O,java.util.TreeMap,~O");\r
-Clazz.makeConstructor(c$,\r
-function(a,b){\r
-Clazz.superConstructor(this,java.util.TreeMap.SubMap,[]);\r
-this.backingMap=a;\r
-this.hasEnd=true;\r
-this.endKey=b;\r
-},"java.util.TreeMap,~O");\r
-Clazz.overrideMethod(c$,"comparator",\r
-function(){\r
-return this.backingMap.comparator();\r
-});\r
-Clazz.overrideMethod(c$,"containsKey",\r
-function(a){\r
-if(this.isInRange(a)){\r
-return this.backingMap.containsKey(a);\r
-}return false;\r
-},"~O");\r
-Clazz.overrideMethod(c$,"entrySet",\r
-function(){\r
-if(this.$entrySet==null){\r
-this.$entrySet=new java.util.TreeMap.SubMapEntrySet(this);\r
-}return this.$entrySet;\r
-});\r
-Clazz.overrideMethod(c$,"firstKey",\r
-function(){\r
-var a=this.firstEntry();\r
-if(a!=null){\r
-return a.key;\r
-}throw new java.util.NoSuchElementException();\r
-});\r
-Clazz.defineMethod(c$,"firstEntry",\r
-function(){\r
-if(!this.hasStart){\r
-var a=this.backingMap.root;\r
-return(a==null)?null:java.util.TreeMap.minimum(this.backingMap.root);\r
-}var a=this.backingMap.findAfter(this.startKey);\r
-if(a!=null&&this.checkUpperBound(a.key)){\r
-return a;\r
-}return null;\r
-});\r
-Clazz.overrideMethod(c$,"get",\r
-function(a){\r
-if(this.isInRange(a)){\r
-return this.backingMap.get(a);\r
-}return null;\r
-},"~O");\r
-Clazz.overrideMethod(c$,"headMap",\r
-function(a){\r
-this.checkRange(a);\r
-if(this.hasStart){\r
-return new java.util.TreeMap.SubMap(this.startKey,this.backingMap,a);\r
-}return new java.util.TreeMap.SubMap(this.backingMap,a);\r
-},"~O");\r
-Clazz.overrideMethod(c$,"isEmpty",\r
-function(){\r
-if(this.hasStart){\r
-var a=this.backingMap.findAfter(this.startKey);\r
-return a==null||!this.checkUpperBound(a.key);\r
-}return this.backingMap.findBefore(this.endKey)==null;\r
-});\r
-Clazz.overrideMethod(c$,"keySet",\r
-function(){\r
-if(this.$keySet==null){\r
-this.$keySet=new java.util.TreeMap.SubMapKeySet(this);\r
-}return this.$keySet;\r
-});\r
-Clazz.overrideMethod(c$,"lastKey",\r
-function(){\r
-if(!this.hasEnd){\r
-return this.backingMap.lastKey();\r
-}var a=this.backingMap.findBefore(this.endKey);\r
-if(a!=null&&this.checkLowerBound(a.key)){\r
-return a.key;\r
-}throw new java.util.NoSuchElementException();\r
-});\r
-Clazz.overrideMethod(c$,"put",\r
-function(a,b){\r
-if(this.isInRange(a)){\r
-return this.backingMap.put(a,b);\r
-}throw new IllegalArgumentException();\r
-},"~O,~O");\r
-Clazz.overrideMethod(c$,"remove",\r
-function(a){\r
-if(this.isInRange(a)){\r
-return this.backingMap.remove(a);\r
-}return null;\r
-},"~O");\r
-Clazz.overrideMethod(c$,"subMap",\r
-function(a,b){\r
-this.checkRange(a);\r
-this.checkRange(b);\r
-var c=this.backingMap.comparator();\r
-if(c==null){\r
-if(java.util.TreeMap.toComparable(a).compareTo(b)<=0){\r
-return new java.util.TreeMap.SubMap(a,this.backingMap,b);\r
-}}else{\r
-if(c.compare(a,b)<=0){\r
-return new java.util.TreeMap.SubMap(a,this.backingMap,b);\r
-}}throw new IllegalArgumentException();\r
-},"~O,~O");\r
-Clazz.overrideMethod(c$,"tailMap",\r
-function(a){\r
-this.checkRange(a);\r
-if(this.hasEnd){\r
-return new java.util.TreeMap.SubMap(a,this.backingMap,this.endKey);\r
-}return new java.util.TreeMap.SubMap(a,this.backingMap);\r
-},"~O");\r
-Clazz.overrideMethod(c$,"values",\r
-function(){\r
-if(this.valuesCollection==null){\r
-this.valuesCollection=new java.util.TreeMap.SubMapValuesCollection(this);\r
-}return this.valuesCollection;\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.decorateAsClass(function(){\r
-this.subMap=null;\r
-Clazz.instantialize(this,arguments);\r
-},java.util.TreeMap,"SubMapEntrySet",java.util.AbstractSet,java.util.Set);\r
-Clazz.makeConstructor(c$,\r
-function(a){\r
-Clazz.superConstructor(this,java.util.TreeMap.SubMapEntrySet,[]);\r
-this.subMap=a;\r
-},"java.util.TreeMap.SubMap");\r
-Clazz.overrideMethod(c$,"isEmpty",\r
-function(){\r
-return this.subMap.isEmpty();\r
-});\r
-Clazz.overrideMethod(c$,"iterator",\r
-function(){\r
-var a=this.subMap.firstEntry();\r
-if(this.subMap.hasEnd){\r
-var b=this.subMap.comparator();\r
-if(b==null){\r
-return new java.util.TreeMap.ComparableBoundedEntryIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));\r
-}return new java.util.TreeMap.ComparatorBoundedEntryIterator(this.subMap.backingMap,a,this.subMap.endKey);\r
-}return new java.util.TreeMap.UnboundedEntryIterator(this.subMap.backingMap,a);\r
-});\r
-Clazz.overrideMethod(c$,"size",\r
-function(){\r
-var a=0;\r
-var b=this.iterator();\r
-while(b.hasNext()){\r
-a++;\r
-b.next();\r
-}\r
-return a;\r
-});\r
-Clazz.overrideMethod(c$,"contains",\r
-function(a){\r
-if(Clazz.instanceOf(a,java.util.Map.Entry)){\r
-var b=a;\r
-var c=b.getKey();\r
-if(this.subMap.isInRange(c)){\r
-var d=this.subMap.get(c);\r
-var e=b.getValue();\r
-return d==null?e==null:d.equals(e);\r
-}}return false;\r
-},"~O");\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.decorateAsClass(function(){\r
-this.subMap=null;\r
-Clazz.instantialize(this,arguments);\r
-},java.util.TreeMap,"SubMapKeySet",java.util.AbstractSet,java.util.Set);\r
-Clazz.makeConstructor(c$,\r
-function(a){\r
-Clazz.superConstructor(this,java.util.TreeMap.SubMapKeySet,[]);\r
-this.subMap=a;\r
-},"java.util.TreeMap.SubMap");\r
-Clazz.overrideMethod(c$,"contains",\r
-function(a){\r
-return this.subMap.containsKey(a);\r
-},"~O");\r
-Clazz.overrideMethod(c$,"isEmpty",\r
-function(){\r
-return this.subMap.isEmpty();\r
-});\r
-Clazz.overrideMethod(c$,"size",\r
-function(){\r
-var a=0;\r
-var b=this.iterator();\r
-while(b.hasNext()){\r
-a++;\r
-b.next();\r
-}\r
-return a;\r
-});\r
-Clazz.overrideMethod(c$,"iterator",\r
-function(){\r
-var a=this.subMap.firstEntry();\r
-if(this.subMap.hasEnd){\r
-var b=this.subMap.comparator();\r
-if(b==null){\r
-return new java.util.TreeMap.ComparableBoundedKeyIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));\r
-}return new java.util.TreeMap.ComparatorBoundedKeyIterator(this.subMap.backingMap,a,this.subMap.endKey);\r
-}return new java.util.TreeMap.UnboundedKeyIterator(this.subMap.backingMap,a);\r
-});\r
-c$=Clazz.p0p();\r
-Clazz.pu$h(self.c$);\r
-c$=Clazz.decorateAsClass(function(){\r
-this.subMap=null;\r
-Clazz.instantialize(this,arguments);\r
-},java.util.TreeMap,"SubMapValuesCollection",java.util.AbstractCollection);\r
-Clazz.makeConstructor(c$,\r
-function(a){\r
-Clazz.superConstructor(this,java.util.TreeMap.SubMapValuesCollection,[]);\r
-this.subMap=a;\r
-},"java.util.TreeMap.SubMap");\r
-Clazz.overrideMethod(c$,"isEmpty",\r
-function(){\r
-return this.subMap.isEmpty();\r
-});\r
-Clazz.overrideMethod(c$,"iterator",\r
-function(){\r
-var a=this.subMap.firstEntry();\r
-if(this.subMap.hasEnd){\r
-var b=this.subMap.comparator();\r
-if(b==null){\r
-return new java.util.TreeMap.ComparableBoundedValueIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));\r
-}return new java.util.TreeMap.ComparatorBoundedValueIterator(this.subMap.backingMap,a,this.subMap.endKey);\r
-}return new java.util.TreeMap.UnboundedValueIterator(this.subMap.backingMap,a);\r
-});\r
-Clazz.overrideMethod(c$,"size",\r
-function(){\r
-var a=0;\r
-for(var b=this.iterator();b.hasNext();){\r
-b.next();\r
-a++;\r
-}\r
-return a;\r
-});\r
-c$=Clazz.p0p();\r
-});\r
+Clazz.load(["java.util.AbstractCollection","$.AbstractMap","$.AbstractSet","$.Iterator","$.MapEntry","$.Set","$.SortedMap"],"java.util.TreeMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.util.ConcurrentModificationException","$.NoSuchElementException"],function(){
+c$=Clazz.decorateAsClass(function(){
+this.$size=0;
+this.root=null;
+this.$comparator=null;
+this.modCount=0;
+this.$entrySet=null;
+Clazz.instantialize(this,arguments);
+},java.util,"TreeMap",java.util.AbstractMap,[java.util.SortedMap,Cloneable,java.io.Serializable]);
+c$.toComparable=Clazz.defineMethod(c$,"toComparable",
+($fz=function(obj){
+return obj;
+},$fz.isPrivate=true,$fz),"~O");
+Clazz.makeConstructor(c$,
+function(comparator){
+Clazz.superConstructor(this,java.util.TreeMap,[]);
+this.$comparator=comparator;
+},"java.util.Comparator");
+Clazz.makeConstructor(c$,
+function(map){
+this.construct();
+this.putAll(map);
+},"java.util.Map");
+Clazz.makeConstructor(c$,
+function(map){
+this.construct(map.comparator());
+var it=map.entrySet().iterator();
+if(it.hasNext()){
+var entry=it.next();
+var last=new java.util.TreeMap.Entry(entry.getKey(),entry.getValue());
+this.root=last;
+this.$size=1;
+while(it.hasNext()){
+entry=it.next();
+var x=new java.util.TreeMap.Entry(entry.getKey(),entry.getValue());
+x.parent=last;
+last.right=x;
+this.$size++;
+this.balance(x);
+last=x;
+}
+}},"java.util.SortedMap");
+Clazz.defineMethod(c$,"balance",
+function(x){
+var y;
+x.color=true;
+while(x!==this.root&&x.parent.color){
+if(x.parent===x.parent.parent.left){
+y=x.parent.parent.right;
+if(y!=null&&y.color){
+x.parent.color=false;
+y.color=false;
+x.parent.parent.color=true;
+x=x.parent.parent;
+}else{
+if(x===x.parent.right){
+x=x.parent;
+this.leftRotate(x);
+}x.parent.color=false;
+x.parent.parent.color=true;
+this.rightRotate(x.parent.parent);
+}}else{
+y=x.parent.parent.left;
+if(y!=null&&y.color){
+x.parent.color=false;
+y.color=false;
+x.parent.parent.color=true;
+x=x.parent.parent;
+}else{
+if(x===x.parent.left){
+x=x.parent;
+this.rightRotate(x);
+}x.parent.color=false;
+x.parent.parent.color=true;
+this.leftRotate(x.parent.parent);
+}}}
+this.root.color=false;
+},"java.util.TreeMap.Entry");
+Clazz.overrideMethod(c$,"clear",
+function(){
+this.root=null;
+this.$size=0;
+this.modCount++;
+});
+Clazz.defineMethod(c$,"clone",
+function(){
+try{
+var clone=Clazz.superCall(this,java.util.TreeMap,"clone",[]);
+clone.$entrySet=null;
+if(this.root!=null){
+clone.root=this.root.clone(null);
+}return clone;
+}catch(e){
+if(Clazz.instanceOf(e,CloneNotSupportedException)){
+return null;
+}else{
+throw e;
+}
+}
+});
+Clazz.overrideMethod(c$,"comparator",
+function(){
+return this.$comparator;
+});
+Clazz.overrideMethod(c$,"containsKey",
+function(key){
+return this.find(key)!=null;
+},"~O");
+Clazz.defineMethod(c$,"containsValue",
+function(value){
+if(this.root!=null){
+return this.containsValue(this.root,value);
+}return false;
+},"~O");
+Clazz.defineMethod(c$,"containsValue",
+($fz=function(node,value){
+if(value==null?node.value==null:value.equals(node.value)){
+return true;
+}if(node.left!=null){
+if(this.containsValue(node.left,value)){
+return true;
+}}if(node.right!=null){
+if(this.containsValue(node.right,value)){
+return true;
+}}return false;
+},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry,~O");
+Clazz.overrideMethod(c$,"entrySet",
+function(){
+if(this.$entrySet==null){
+this.$entrySet=((Clazz.isClassDefined("java.util.TreeMap$1")?0:java.util.TreeMap.$TreeMap$1$()),Clazz.innerTypeInstance(java.util.TreeMap$1,this,null));
+}return this.$entrySet;
+});
+Clazz.defineMethod(c$,"find",
+($fz=function(keyObj){
+var result;
+var key=keyObj;
+var object=null;
+if(this.$comparator==null){
+object=java.util.TreeMap.toComparable(key);
+}var x=this.root;
+while(x!=null){
+result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);
+if(result==0){
+return x;
+}x=result<0?x.left:x.right;
+}
+return null;
+},$fz.isPrivate=true,$fz),"~O");
+Clazz.defineMethod(c$,"findAfter",
+function(keyObj){
+var key=keyObj;
+var result;
+var object=null;
+if(this.$comparator==null){
+object=java.util.TreeMap.toComparable(key);
+}var x=this.root;
+var last=null;
+while(x!=null){
+result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);
+if(result==0){
+return x;
+}if(result<0){
+last=x;
+x=x.left;
+}else{
+x=x.right;
+}}
+return last;
+},"~O");
+Clazz.defineMethod(c$,"findBefore",
+function(key){
+var result;
+var object=null;
+if(this.$comparator==null){
+object=java.util.TreeMap.toComparable(key);
+}var x=this.root;
+var last=null;
+while(x!=null){
+result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);
+if(result<=0){
+x=x.left;
+}else{
+last=x;
+x=x.right;
+}}
+return last;
+},"~O");
+Clazz.overrideMethod(c$,"firstKey",
+function(){
+if(this.root!=null){
+return java.util.TreeMap.minimum(this.root).key;
+}throw new java.util.NoSuchElementException();
+});
+Clazz.defineMethod(c$,"fixup",
+($fz=function(x){
+var w;
+while(x!==this.root&&!x.color){
+if(x===x.parent.left){
+w=x.parent.right;
+if(w==null){
+x=x.parent;
+continue;}if(w.color){
+w.color=false;
+x.parent.color=true;
+this.leftRotate(x.parent);
+w=x.parent.right;
+if(w==null){
+x=x.parent;
+continue;}}if((w.left==null||!w.left.color)&&(w.right==null||!w.right.color)){
+w.color=true;
+x=x.parent;
+}else{
+if(w.right==null||!w.right.color){
+w.left.color=false;
+w.color=true;
+this.rightRotate(w);
+w=x.parent.right;
+}w.color=x.parent.color;
+x.parent.color=false;
+w.right.color=false;
+this.leftRotate(x.parent);
+x=this.root;
+}}else{
+w=x.parent.left;
+if(w==null){
+x=x.parent;
+continue;}if(w.color){
+w.color=false;
+x.parent.color=true;
+this.rightRotate(x.parent);
+w=x.parent.left;
+if(w==null){
+x=x.parent;
+continue;}}if((w.left==null||!w.left.color)&&(w.right==null||!w.right.color)){
+w.color=true;
+x=x.parent;
+}else{
+if(w.left==null||!w.left.color){
+w.right.color=false;
+w.color=true;
+this.leftRotate(w);
+w=x.parent.left;
+}w.color=x.parent.color;
+x.parent.color=false;
+w.left.color=false;
+this.rightRotate(x.parent);
+x=this.root;
+}}}
+x.color=false;
+},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");
+Clazz.overrideMethod(c$,"get",
+function(key){
+var node=this.find(key);
+if(node!=null){
+return node.value;
+}return null;
+},"~O");
+Clazz.overrideMethod(c$,"headMap",
+function(endKey){
+if(this.$comparator==null){
+java.util.TreeMap.toComparable(endKey).compareTo(endKey);
+}else{
+this.$comparator.compare(endKey,endKey);
+}return new java.util.TreeMap.SubMap(this,endKey);
+},"~O");
+Clazz.overrideMethod(c$,"keySet",
+function(){
+if(this.$keySet==null){
+this.$keySet=((Clazz.isClassDefined("java.util.TreeMap$2")?0:java.util.TreeMap.$TreeMap$2$()),Clazz.innerTypeInstance(java.util.TreeMap$2,this,null));
+}return this.$keySet;
+});
+Clazz.overrideMethod(c$,"lastKey",
+function(){
+if(this.root!=null){
+return java.util.TreeMap.maximum(this.root).key;
+}throw new java.util.NoSuchElementException();
+});
+Clazz.defineMethod(c$,"leftRotate",
+($fz=function(x){
+var y=x.right;
+x.right=y.left;
+if(y.left!=null){
+y.left.parent=x;
+}y.parent=x.parent;
+if(x.parent==null){
+this.root=y;
+}else{
+if(x===x.parent.left){
+x.parent.left=y;
+}else{
+x.parent.right=y;
+}}y.left=x;
+x.parent=y;
+},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");
+c$.maximum=Clazz.defineMethod(c$,"maximum",
+function(x){
+while(x.right!=null){
+x=x.right;
+}
+return x;
+},"java.util.TreeMap.Entry");
+c$.minimum=Clazz.defineMethod(c$,"minimum",
+function(x){
+while(x.left!=null){
+x=x.left;
+}
+return x;
+},"java.util.TreeMap.Entry");
+c$.predecessor=Clazz.defineMethod(c$,"predecessor",
+function(x){
+if(x.left!=null){
+return java.util.TreeMap.maximum(x.left);
+}var y=x.parent;
+while(y!=null&&x===y.left){
+x=y;
+y=y.parent;
+}
+return y;
+},"java.util.TreeMap.Entry");
+Clazz.overrideMethod(c$,"put",
+function(key,value){
+var entry=this.rbInsert(key);
+var result=entry.value;
+entry.value=value;
+return result;
+},"~O,~O");
+Clazz.defineMethod(c$,"rbDelete",
+function(z){
+var y=z.left==null||z.right==null?z:java.util.TreeMap.successor(z);
+var x=y.left!=null?y.left:y.right;
+if(x!=null){
+x.parent=y.parent;
+}if(y.parent==null){
+this.root=x;
+}else if(y===y.parent.left){
+y.parent.left=x;
+}else{
+y.parent.right=x;
+}this.modCount++;
+if(y!==z){
+z.key=y.key;
+z.value=y.value;
+}if(!y.color&&this.root!=null){
+if(x==null){
+this.fixup(y.parent);
+}else{
+this.fixup(x);
+}}this.$size--;
+},"java.util.TreeMap.Entry");
+Clazz.defineMethod(c$,"rbInsert",
+($fz=function(object){
+var result=0;
+var y=null;
+if(this.$size!=0){
+var key=null;
+if(this.$comparator==null){
+key=java.util.TreeMap.toComparable(object);
+}var x=this.root;
+while(x!=null){
+y=x;
+result=key!=null?key.compareTo(x.key):this.$comparator.compare(object,x.key);
+if(result==0){
+return x;
+}x=result<0?x.left:x.right;
+}
+}this.$size++;
+this.modCount++;
+var z=new java.util.TreeMap.Entry(object);
+if(y==null){
+return this.root=z;
+}z.parent=y;
+if(result<0){
+y.left=z;
+}else{
+y.right=z;
+}this.balance(z);
+return z;
+},$fz.isPrivate=true,$fz),"~O");
+Clazz.overrideMethod(c$,"remove",
+function(key){
+var node=this.find(key);
+if(node==null){
+return null;
+}var result=node.value;
+this.rbDelete(node);
+return result;
+},"~O");
+Clazz.defineMethod(c$,"rightRotate",
+($fz=function(x){
+var y=x.left;
+x.left=y.right;
+if(y.right!=null){
+y.right.parent=x;
+}y.parent=x.parent;
+if(x.parent==null){
+this.root=y;
+}else{
+if(x===x.parent.right){
+x.parent.right=y;
+}else{
+x.parent.left=y;
+}}y.right=x;
+x.parent=y;
+},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");
+Clazz.overrideMethod(c$,"size",
+function(){
+return this.$size;
+});
+Clazz.overrideMethod(c$,"subMap",
+function(startKey,endKey){
+if(this.$comparator==null){
+if(java.util.TreeMap.toComparable(startKey).compareTo(endKey)<=0){
+return new java.util.TreeMap.SubMap(startKey,this,endKey);
+}}else{
+if(this.$comparator.compare(startKey,endKey)<=0){
+return new java.util.TreeMap.SubMap(startKey,this,endKey);
+}}throw new IllegalArgumentException();
+},"~O,~O");
+c$.successor=Clazz.defineMethod(c$,"successor",
+function(x){
+if(x.right!=null){
+return java.util.TreeMap.minimum(x.right);
+}var y=x.parent;
+while(y!=null&&x===y.right){
+x=y;
+y=y.parent;
+}
+return y;
+},"java.util.TreeMap.Entry");
+Clazz.overrideMethod(c$,"tailMap",
+function(startKey){
+if(this.$comparator==null){
+java.util.TreeMap.toComparable(startKey).compareTo(startKey);
+}else{
+this.$comparator.compare(startKey,startKey);
+}return new java.util.TreeMap.SubMap(startKey,this);
+},"~O");
+Clazz.overrideMethod(c$,"values",
+function(){
+if(this.valuesCollection==null){
+this.valuesCollection=((Clazz.isClassDefined("java.util.TreeMap$3")?0:java.util.TreeMap.$TreeMap$3$()),Clazz.innerTypeInstance(java.util.TreeMap$3,this,null));
+}return this.valuesCollection;
+});
+c$.$TreeMap$1$=function(){
+Clazz.pu$h(self.c$);
+c$=Clazz.declareAnonymous(java.util,"TreeMap$1",java.util.AbstractSet);
+Clazz.overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.TreeMap"].$size;
+});
+Clazz.overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.TreeMap"].clear();
+});
+Clazz.overrideMethod(c$,"contains",
+function(object){
+if(Clazz.instanceOf(object,java.util.Map.Entry)){
+var entry=object;
+var v1=this.b$["java.util.TreeMap"].get(entry.getKey());
+var v2=entry.getValue();
+return v1==null?v2==null:v1.equals(v2);
+}return false;
+},"~O");
+Clazz.defineMethod(c$,"iterator",
+function(){
+return new java.util.TreeMap.UnboundedEntryIterator(this.b$["java.util.TreeMap"]);
+});
+c$=Clazz.p0p();
+};
+c$.$TreeMap$2$=function(){
+Clazz.pu$h(self.c$);
+c$=Clazz.declareAnonymous(java.util,"TreeMap$2",java.util.AbstractSet);
+Clazz.overrideMethod(c$,"contains",
+function(object){
+return this.b$["java.util.TreeMap"].containsKey(object);
+},"~O");
+Clazz.overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.TreeMap"].$size;
+});
+Clazz.overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.TreeMap"].clear();
+});
+Clazz.overrideMethod(c$,"iterator",
+function(){
+return new java.util.TreeMap.UnboundedKeyIterator(this.b$["java.util.TreeMap"]);
+});
+c$=Clazz.p0p();
+};
+c$.$TreeMap$3$=function(){
+Clazz.pu$h(self.c$);
+c$=Clazz.declareAnonymous(java.util,"TreeMap$3",java.util.AbstractCollection);
+Clazz.overrideMethod(c$,"contains",
+function(object){
+return this.b$["java.util.TreeMap"].containsValue(object);
+},"~O");
+Clazz.overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.TreeMap"].$size;
+});
+Clazz.overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.TreeMap"].clear();
+});
+Clazz.overrideMethod(c$,"iterator",
+function(){
+return new java.util.TreeMap.UnboundedValueIterator(this.b$["java.util.TreeMap"]);
+});
+c$=Clazz.p0p();
+};
+Clazz.pu$h(self.c$);
+c$=Clazz.decorateAsClass(function(){
+this.parent=null;
+this.left=null;
+this.right=null;
+this.color=false;
+Clazz.instantialize(this,arguments);
+},java.util.TreeMap,"Entry",java.util.MapEntry);
+Clazz.defineMethod(c$,"clone",
+function(a){
+var b=Clazz.superCall(this,java.util.TreeMap.Entry,"clone",[]);
+b.parent=a;
+if(this.left!=null){
+b.left=this.left.clone(b);
+}if(this.right!=null){
+b.right=this.right.clone(b);
+}return b;
+},"java.util.TreeMap.Entry");
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.decorateAsClass(function(){
+this.backingMap=null;
+this.expectedModCount=0;
+this.node=null;
+this.lastNode=null;
+Clazz.instantialize(this,arguments);
+},java.util.TreeMap,"AbstractMapIterator");
+Clazz.makeConstructor(c$,
+function(a,b){
+this.backingMap=a;
+this.expectedModCount=a.modCount;
+this.node=b;
+},"java.util.TreeMap,java.util.TreeMap.Entry");
+Clazz.defineMethod(c$,"hasNext",
+function(){
+return this.node!=null;
+});
+Clazz.defineMethod(c$,"remove",
+function(){
+if(this.expectedModCount==this.backingMap.modCount){
+if(this.lastNode!=null){
+this.backingMap.rbDelete(this.lastNode);
+this.lastNode=null;
+this.expectedModCount++;
+}else{
+throw new IllegalStateException();
+}}else{
+throw new java.util.ConcurrentModificationException();
+}});
+Clazz.defineMethod(c$,"makeNext",
+function(){
+if(this.expectedModCount!=this.backingMap.modCount){
+throw new java.util.ConcurrentModificationException();
+}else if(this.node==null){
+throw new java.util.NoSuchElementException();
+}this.lastNode=this.node;
+this.node=java.util.TreeMap.successor(this.node);
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"UnboundedEntryIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);
+Clazz.makeConstructor(c$,
+function(a){
+Clazz.superConstructor(this,java.util.TreeMap.UnboundedEntryIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);
+},"java.util.TreeMap");
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+return this.lastNode;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"UnboundedKeyIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);
+Clazz.makeConstructor(c$,
+function(a){
+Clazz.superConstructor(this,java.util.TreeMap.UnboundedKeyIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);
+},"java.util.TreeMap");
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+return this.lastNode.key;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"UnboundedValueIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);
+Clazz.makeConstructor(c$,
+function(a){
+Clazz.superConstructor(this,java.util.TreeMap.UnboundedValueIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);
+},"java.util.TreeMap");
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+return this.lastNode.value;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.decorateAsClass(function(){
+this.endKey=null;
+this.cmp=null;
+Clazz.instantialize(this,arguments);
+},java.util.TreeMap,"ComparatorBoundedIterator",java.util.TreeMap.AbstractMapIterator);
+Clazz.makeConstructor(c$,
+function(a,b,c){
+Clazz.superConstructor(this,java.util.TreeMap.ComparatorBoundedIterator,[a,b]);
+this.endKey=c;
+this.cmp=a.comparator();
+},"java.util.TreeMap,java.util.TreeMap.Entry,~O");
+Clazz.defineMethod(c$,"cleanNext",
+function(){
+if(this.node!=null&&this.cmp.compare(this.endKey,this.node.key)<=0){
+this.node=null;
+}});
+Clazz.overrideMethod(c$,"hasNext",
+function(){
+return(this.node!=null&&this.endKey!=null)&&(this.cmp.compare(this.node.key,this.endKey)<0);
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"ComparatorBoundedEntryIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"ComparatorBoundedKeyIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode.key;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"ComparatorBoundedValueIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode.value;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.decorateAsClass(function(){
+this.endKey=null;
+Clazz.instantialize(this,arguments);
+},java.util.TreeMap,"ComparableBoundedIterator",java.util.TreeMap.AbstractMapIterator);
+Clazz.makeConstructor(c$,
+function(a,b,c){
+Clazz.superConstructor(this,java.util.TreeMap.ComparableBoundedIterator,[a,b]);
+this.endKey=c;
+},"java.util.TreeMap,java.util.TreeMap.Entry,Comparable");
+Clazz.defineMethod(c$,"cleanNext",
+function(){
+if((this.node!=null)&&(this.endKey.compareTo(this.node.key)<=0)){
+this.node=null;
+}});
+Clazz.overrideMethod(c$,"hasNext",
+function(){
+return(this.node!=null)&&(this.endKey.compareTo(this.node.key)>0);
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"ComparableBoundedEntryIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"ComparableBoundedKeyIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode.key;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.declareType(java.util.TreeMap,"ComparableBoundedValueIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);
+Clazz.overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode.value;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.decorateAsClass(function(){
+this.backingMap=null;
+this.hasStart=false;
+this.hasEnd=false;
+this.startKey=null;
+this.endKey=null;
+this.$entrySet=null;
+Clazz.instantialize(this,arguments);
+},java.util.TreeMap,"SubMap",java.util.AbstractMap,[java.util.SortedMap,java.io.Serializable]);
+Clazz.makeConstructor(c$,
+function(a,b){
+Clazz.superConstructor(this,java.util.TreeMap.SubMap,[]);
+this.backingMap=b;
+this.hasStart=true;
+this.startKey=a;
+},"~O,java.util.TreeMap");
+Clazz.makeConstructor(c$,
+function(a,b,c){
+Clazz.superConstructor(this,java.util.TreeMap.SubMap,[]);
+this.backingMap=b;
+this.hasStart=this.hasEnd=true;
+this.startKey=a;
+this.endKey=c;
+},"~O,java.util.TreeMap,~O");
+Clazz.makeConstructor(c$,
+function(a,b){
+Clazz.superConstructor(this,java.util.TreeMap.SubMap,[]);
+this.backingMap=a;
+this.hasEnd=true;
+this.endKey=b;
+},"java.util.TreeMap,~O");
+Clazz.overrideMethod(c$,"comparator",
+function(){
+return this.backingMap.comparator();
+});
+Clazz.overrideMethod(c$,"containsKey",
+function(a){
+if(this.isInRange(a)){
+return this.backingMap.containsKey(a);
+}return false;
+},"~O");
+Clazz.overrideMethod(c$,"entrySet",
+function(){
+if(this.$entrySet==null){
+this.$entrySet=new java.util.TreeMap.SubMapEntrySet(this);
+}return this.$entrySet;
+});
+Clazz.overrideMethod(c$,"firstKey",
+function(){
+var a=this.firstEntry();
+if(a!=null){
+return a.key;
+}throw new java.util.NoSuchElementException();
+});
+Clazz.defineMethod(c$,"firstEntry",
+function(){
+if(!this.hasStart){
+var a=this.backingMap.root;
+return(a==null)?null:java.util.TreeMap.minimum(this.backingMap.root);
+}var a=this.backingMap.findAfter(this.startKey);
+if(a!=null&&this.checkUpperBound(a.key)){
+return a;
+}return null;
+});
+Clazz.overrideMethod(c$,"get",
+function(a){
+if(this.isInRange(a)){
+return this.backingMap.get(a);
+}return null;
+},"~O");
+Clazz.overrideMethod(c$,"headMap",
+function(a){
+this.checkRange(a);
+if(this.hasStart){
+return new java.util.TreeMap.SubMap(this.startKey,this.backingMap,a);
+}return new java.util.TreeMap.SubMap(this.backingMap,a);
+},"~O");
+Clazz.overrideMethod(c$,"isEmpty",
+function(){
+if(this.hasStart){
+var a=this.backingMap.findAfter(this.startKey);
+return a==null||!this.checkUpperBound(a.key);
+}return this.backingMap.findBefore(this.endKey)==null;
+});
+Clazz.overrideMethod(c$,"keySet",
+function(){
+if(this.$keySet==null){
+this.$keySet=new java.util.TreeMap.SubMapKeySet(this);
+}return this.$keySet;
+});
+Clazz.overrideMethod(c$,"lastKey",
+function(){
+if(!this.hasEnd){
+return this.backingMap.lastKey();
+}var a=this.backingMap.findBefore(this.endKey);
+if(a!=null&&this.checkLowerBound(a.key)){
+return a.key;
+}throw new java.util.NoSuchElementException();
+});
+Clazz.overrideMethod(c$,"put",
+function(a,b){
+if(this.isInRange(a)){
+return this.backingMap.put(a,b);
+}throw new IllegalArgumentException();
+},"~O,~O");
+Clazz.overrideMethod(c$,"remove",
+function(a){
+if(this.isInRange(a)){
+return this.backingMap.remove(a);
+}return null;
+},"~O");
+Clazz.overrideMethod(c$,"subMap",
+function(a,b){
+this.checkRange(a);
+this.checkRange(b);
+var c=this.backingMap.comparator();
+if(c==null){
+if(java.util.TreeMap.toComparable(a).compareTo(b)<=0){
+return new java.util.TreeMap.SubMap(a,this.backingMap,b);
+}}else{
+if(c.compare(a,b)<=0){
+return new java.util.TreeMap.SubMap(a,this.backingMap,b);
+}}throw new IllegalArgumentException();
+},"~O,~O");
+Clazz.overrideMethod(c$,"tailMap",
+function(a){
+this.checkRange(a);
+if(this.hasEnd){
+return new java.util.TreeMap.SubMap(a,this.backingMap,this.endKey);
+}return new java.util.TreeMap.SubMap(a,this.backingMap);
+},"~O");
+Clazz.overrideMethod(c$,"values",
+function(){
+if(this.valuesCollection==null){
+this.valuesCollection=new java.util.TreeMap.SubMapValuesCollection(this);
+}return this.valuesCollection;
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.decorateAsClass(function(){
+this.subMap=null;
+Clazz.instantialize(this,arguments);
+},java.util.TreeMap,"SubMapEntrySet",java.util.AbstractSet,java.util.Set);
+Clazz.makeConstructor(c$,
+function(a){
+Clazz.superConstructor(this,java.util.TreeMap.SubMapEntrySet,[]);
+this.subMap=a;
+},"java.util.TreeMap.SubMap");
+Clazz.overrideMethod(c$,"isEmpty",
+function(){
+return this.subMap.isEmpty();
+});
+Clazz.overrideMethod(c$,"iterator",
+function(){
+var a=this.subMap.firstEntry();
+if(this.subMap.hasEnd){
+var b=this.subMap.comparator();
+if(b==null){
+return new java.util.TreeMap.ComparableBoundedEntryIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));
+}return new java.util.TreeMap.ComparatorBoundedEntryIterator(this.subMap.backingMap,a,this.subMap.endKey);
+}return new java.util.TreeMap.UnboundedEntryIterator(this.subMap.backingMap,a);
+});
+Clazz.overrideMethod(c$,"size",
+function(){
+var a=0;
+var b=this.iterator();
+while(b.hasNext()){
+a++;
+b.next();
+}
+return a;
+});
+Clazz.overrideMethod(c$,"contains",
+function(a){
+if(Clazz.instanceOf(a,java.util.Map.Entry)){
+var b=a;
+var c=b.getKey();
+if(this.subMap.isInRange(c)){
+var d=this.subMap.get(c);
+var e=b.getValue();
+return d==null?e==null:d.equals(e);
+}}return false;
+},"~O");
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.decorateAsClass(function(){
+this.subMap=null;
+Clazz.instantialize(this,arguments);
+},java.util.TreeMap,"SubMapKeySet",java.util.AbstractSet,java.util.Set);
+Clazz.makeConstructor(c$,
+function(a){
+Clazz.superConstructor(this,java.util.TreeMap.SubMapKeySet,[]);
+this.subMap=a;
+},"java.util.TreeMap.SubMap");
+Clazz.overrideMethod(c$,"contains",
+function(a){
+return this.subMap.containsKey(a);
+},"~O");
+Clazz.overrideMethod(c$,"isEmpty",
+function(){
+return this.subMap.isEmpty();
+});
+Clazz.overrideMethod(c$,"size",
+function(){
+var a=0;
+var b=this.iterator();
+while(b.hasNext()){
+a++;
+b.next();
+}
+return a;
+});
+Clazz.overrideMethod(c$,"iterator",
+function(){
+var a=this.subMap.firstEntry();
+if(this.subMap.hasEnd){
+var b=this.subMap.comparator();
+if(b==null){
+return new java.util.TreeMap.ComparableBoundedKeyIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));
+}return new java.util.TreeMap.ComparatorBoundedKeyIterator(this.subMap.backingMap,a,this.subMap.endKey);
+}return new java.util.TreeMap.UnboundedKeyIterator(this.subMap.backingMap,a);
+});
+c$=Clazz.p0p();
+Clazz.pu$h(self.c$);
+c$=Clazz.decorateAsClass(function(){
+this.subMap=null;
+Clazz.instantialize(this,arguments);
+},java.util.TreeMap,"SubMapValuesCollection",java.util.AbstractCollection);
+Clazz.makeConstructor(c$,
+function(a){
+Clazz.superConstructor(this,java.util.TreeMap.SubMapValuesCollection,[]);
+this.subMap=a;
+},"java.util.TreeMap.SubMap");
+Clazz.overrideMethod(c$,"isEmpty",
+function(){
+return this.subMap.isEmpty();
+});
+Clazz.overrideMethod(c$,"iterator",
+function(){
+var a=this.subMap.firstEntry();
+if(this.subMap.hasEnd){
+var b=this.subMap.comparator();
+if(b==null){
+return new java.util.TreeMap.ComparableBoundedValueIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));
+}return new java.util.TreeMap.ComparatorBoundedValueIterator(this.subMap.backingMap,a,this.subMap.endKey);
+}return new java.util.TreeMap.UnboundedValueIterator(this.subMap.backingMap,a);
+});
+Clazz.overrideMethod(c$,"size",
+function(){
+var a=0;
+for(var b=this.iterator();b.hasNext();){
+b.next();
+a++;
+}
+return a;
+});
+c$=Clazz.p0p();
+});