Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / java / util / ArrayDeque.js
index a15281f..d52b319 100644 (file)
-Clazz.declarePackage ("java.util");\r
-Clazz.load (["java.util.AbstractCollection", "$.Iterator", "java.util.Deque"], "java.util.ArrayDeque", ["java.lang.AssertionError", "$.IllegalStateException", "$.NullPointerException", "java.lang.reflect.Array", "java.util.Arrays", "$.ConcurrentModificationException", "$.NoSuchElementException"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.elements = null;\r
-this.head = 0;\r
-this.tail = 0;\r
-if (!Clazz.isClassDefined ("java.util.ArrayDeque.DeqIterator")) {\r
-java.util.ArrayDeque.$ArrayDeque$DeqIterator$ ();\r
-}\r
-if (!Clazz.isClassDefined ("java.util.ArrayDeque.DescendingIterator")) {\r
-java.util.ArrayDeque.$ArrayDeque$DescendingIterator$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, java.util, "ArrayDeque", java.util.AbstractCollection, [java.util.Deque, Cloneable, java.io.Serializable]);\r
-Clazz.defineMethod (c$, "allocateElements", \r
- function (numElements) {\r
-var initialCapacity = 8;\r
-if (numElements >= initialCapacity) {\r
-initialCapacity = numElements;\r
-initialCapacity |= (initialCapacity >>> 1);\r
-initialCapacity |= (initialCapacity >>> 2);\r
-initialCapacity |= (initialCapacity >>> 4);\r
-initialCapacity |= (initialCapacity >>> 8);\r
-initialCapacity |= (initialCapacity >>> 16);\r
-initialCapacity++;\r
-if (initialCapacity < 0) initialCapacity >>>= 1;\r
-}this.elements =  new Array (initialCapacity);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "doubleCapacity", \r
- function () {\r
-var p = this.head;\r
-var n = this.elements.length;\r
-var r = n - p;\r
-var newCapacity = n << 1;\r
-if (newCapacity < 0) throw  new IllegalStateException ("Sorry, deque too big");\r
-var a =  new Array (newCapacity);\r
-System.arraycopy (this.elements, p, a, 0, r);\r
-System.arraycopy (this.elements, 0, a, r, p);\r
-this.elements = a;\r
-this.head = 0;\r
-this.tail = n;\r
-});\r
-Clazz.defineMethod (c$, "copyElements", \r
- function (a) {\r
-if (this.head < this.tail) {\r
-System.arraycopy (this.elements, this.head, a, 0, this.size ());\r
-} else if (this.head > this.tail) {\r
-var headPortionLen = this.elements.length - this.head;\r
-System.arraycopy (this.elements, this.head, a, 0, headPortionLen);\r
-System.arraycopy (this.elements, 0, a, headPortionLen, this.tail);\r
-}return a;\r
-}, "~A");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, java.util.ArrayDeque, []);\r
-this.elements =  new Array (16);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (numElements) {\r
-Clazz.superConstructor (this, java.util.ArrayDeque, []);\r
-this.allocateElements (numElements);\r
-}, "~N");\r
-Clazz.makeConstructor (c$, \r
-function (c) {\r
-Clazz.superConstructor (this, java.util.ArrayDeque, []);\r
-this.allocateElements (c.size ());\r
-this.addAll (c);\r
-}, "java.util.Collection");\r
-Clazz.overrideMethod (c$, "addFirst", \r
-function (e) {\r
-if (e == null) throw  new NullPointerException ();\r
-this.elements[this.head = (this.head - 1) & (this.elements.length - 1)] = e;\r
-if (this.head == this.tail) this.doubleCapacity ();\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "addLast", \r
-function (e) {\r
-if (e == null) throw  new NullPointerException ();\r
-this.elements[this.tail] = e;\r
-if ((this.tail = (this.tail + 1) & (this.elements.length - 1)) == this.head) this.doubleCapacity ();\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "offerFirst", \r
-function (e) {\r
-this.addFirst (e);\r
-return true;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "offerLast", \r
-function (e) {\r
-this.addLast (e);\r
-return true;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "removeFirst", \r
-function () {\r
-var x = this.pollFirst ();\r
-if (x == null) throw  new java.util.NoSuchElementException ();\r
-return x;\r
-});\r
-Clazz.overrideMethod (c$, "removeLast", \r
-function () {\r
-var x = this.pollLast ();\r
-if (x == null) throw  new java.util.NoSuchElementException ();\r
-return x;\r
-});\r
-Clazz.overrideMethod (c$, "pollFirst", \r
-function () {\r
-var h = this.head;\r
-var result = this.elements[h];\r
-if (result == null) return null;\r
-this.elements[h] = null;\r
-this.head = (h + 1) & (this.elements.length - 1);\r
-return result;\r
-});\r
-Clazz.overrideMethod (c$, "pollLast", \r
-function () {\r
-var t = (this.tail - 1) & (this.elements.length - 1);\r
-var result = this.elements[t];\r
-if (result == null) return null;\r
-this.elements[t] = null;\r
-this.tail = t;\r
-return result;\r
-});\r
-Clazz.overrideMethod (c$, "getFirst", \r
-function () {\r
-var x = this.elements[this.head];\r
-if (x == null) throw  new java.util.NoSuchElementException ();\r
-return x;\r
-});\r
-Clazz.overrideMethod (c$, "getLast", \r
-function () {\r
-var x = this.elements[(this.tail - 1) & (this.elements.length - 1)];\r
-if (x == null) throw  new java.util.NoSuchElementException ();\r
-return x;\r
-});\r
-Clazz.overrideMethod (c$, "peekFirst", \r
-function () {\r
-return this.elements[this.head];\r
-});\r
-Clazz.overrideMethod (c$, "peekLast", \r
-function () {\r
-return this.elements[(this.tail - 1) & (this.elements.length - 1)];\r
-});\r
-Clazz.overrideMethod (c$, "removeFirstOccurrence", \r
-function (o) {\r
-if (o == null) return false;\r
-var mask = this.elements.length - 1;\r
-var i = this.head;\r
-var x;\r
-while ((x = this.elements[i]) != null) {\r
-if (o.equals (x)) {\r
-this.$delete (i);\r
-return true;\r
-}i = (i + 1) & mask;\r
-}\r
-return false;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "removeLastOccurrence", \r
-function (o) {\r
-if (o == null) return false;\r
-var mask = this.elements.length - 1;\r
-var i = (this.tail - 1) & mask;\r
-var x;\r
-while ((x = this.elements[i]) != null) {\r
-if (o.equals (x)) {\r
-this.$delete (i);\r
-return true;\r
-}i = (i - 1) & mask;\r
-}\r
-return false;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "add", \r
-function (e) {\r
-this.addLast (e);\r
-return true;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "offer", \r
-function (e) {\r
-return this.offerLast (e);\r
-}, "~O");\r
-Clazz.defineMethod (c$, "remove", \r
-function () {\r
-return this.removeFirst ();\r
-});\r
-Clazz.overrideMethod (c$, "poll", \r
-function () {\r
-return this.pollFirst ();\r
-});\r
-Clazz.overrideMethod (c$, "element", \r
-function () {\r
-return this.getFirst ();\r
-});\r
-Clazz.overrideMethod (c$, "peek", \r
-function () {\r
-return this.peekFirst ();\r
-});\r
-Clazz.overrideMethod (c$, "push", \r
-function (e) {\r
-this.addFirst (e);\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "pop", \r
-function () {\r
-return this.removeFirst ();\r
-});\r
-Clazz.defineMethod (c$, "checkInvariants", \r
- function () {\r
-});\r
-Clazz.defineMethod (c$, "$delete", \r
- function (i) {\r
-this.checkInvariants ();\r
-var elements = this.elements;\r
-var mask = elements.length - 1;\r
-var h = this.head;\r
-var t = this.tail;\r
-var front = (i - h) & mask;\r
-var back = (t - i) & mask;\r
-if (front >= ((t - h) & mask)) throw  new java.util.ConcurrentModificationException ();\r
-if (front < back) {\r
-if (h <= i) {\r
-System.arraycopy (elements, h, elements, h + 1, front);\r
-} else {\r
-System.arraycopy (elements, 0, elements, 1, i);\r
-elements[0] = elements[mask];\r
-System.arraycopy (elements, h, elements, h + 1, mask - h);\r
-}elements[h] = null;\r
-this.head = (h + 1) & mask;\r
-return false;\r
-} else {\r
-if (i < t) {\r
-System.arraycopy (elements, i + 1, elements, i, back);\r
-this.tail = t - 1;\r
-} else {\r
-System.arraycopy (elements, i + 1, elements, i, mask - i);\r
-elements[mask] = elements[0];\r
-System.arraycopy (elements, 1, elements, 0, t);\r
-this.tail = (t - 1) & mask;\r
-}return true;\r
-}}, "~N");\r
-Clazz.overrideMethod (c$, "size", \r
-function () {\r
-return (this.tail - this.head) & (this.elements.length - 1);\r
-});\r
-Clazz.overrideMethod (c$, "isEmpty", \r
-function () {\r
-return this.head == this.tail;\r
-});\r
-Clazz.overrideMethod (c$, "iterator", \r
-function () {\r
-return Clazz.innerTypeInstance (java.util.ArrayDeque.DeqIterator, this, null);\r
-});\r
-Clazz.overrideMethod (c$, "descendingIterator", \r
-function () {\r
-return Clazz.innerTypeInstance (java.util.ArrayDeque.DescendingIterator, this, null);\r
-});\r
-Clazz.overrideMethod (c$, "contains", \r
-function (o) {\r
-if (o == null) return false;\r
-var mask = this.elements.length - 1;\r
-var i = this.head;\r
-var x;\r
-while ((x = this.elements[i]) != null) {\r
-if (o.equals (x)) return true;\r
-i = (i + 1) & mask;\r
-}\r
-return false;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "remove", \r
-function (o) {\r
-return this.removeFirstOccurrence (o);\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "clear", \r
-function () {\r
-var h = this.head;\r
-var t = this.tail;\r
-if (h != t) {\r
-this.head = this.tail = 0;\r
-var i = h;\r
-var mask = this.elements.length - 1;\r
-do {\r
-this.elements[i] = null;\r
-i = (i + 1) & mask;\r
-} while (i != t);\r
-}});\r
-Clazz.defineMethod (c$, "toArray", \r
-function () {\r
-return this.copyElements ( new Array (this.size ()));\r
-});\r
-Clazz.defineMethod (c$, "toArray", \r
-function (a) {\r
-var size = this.size ();\r
-if (a.length < size) a = java.lang.reflect.Array.newInstance (a.getClass ().getComponentType (), size);\r
-this.copyElements (a);\r
-if (a.length > size) a[size] = null;\r
-return a;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "clone", \r
-function () {\r
-try {\r
-var result = Clazz.superCall (this, java.util.ArrayDeque, "clone", []);\r
-result.elements = java.util.Arrays.copyOf (this.elements, this.elements.length);\r
-return result;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, CloneNotSupportedException)) {\r
-throw  new AssertionError ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-});\r
-c$.$ArrayDeque$DeqIterator$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.cursor = 0;\r
-this.fence = 0;\r
-this.lastRet = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, java.util.ArrayDeque, "DeqIterator", null, java.util.Iterator);\r
-Clazz.prepareFields (c$, function () {\r
-this.cursor = this.b$["java.util.ArrayDeque"].head;\r
-this.fence = this.b$["java.util.ArrayDeque"].tail;\r
-});\r
-Clazz.overrideMethod (c$, "hasNext", \r
-function () {\r
-return this.cursor != this.fence;\r
-});\r
-Clazz.overrideMethod (c$, "next", \r
-function () {\r
-if (this.cursor == this.fence) throw  new java.util.NoSuchElementException ();\r
-var a = this.b$["java.util.ArrayDeque"].elements[this.cursor];\r
-if (this.b$["java.util.ArrayDeque"].tail != this.fence || a == null) throw  new java.util.ConcurrentModificationException ();\r
-this.lastRet = this.cursor;\r
-this.cursor = (this.cursor + 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);\r
-return a;\r
-});\r
-Clazz.overrideMethod (c$, "remove", \r
-function () {\r
-if (this.lastRet < 0) throw  new IllegalStateException ();\r
-if (this.b$["java.util.ArrayDeque"].$delete (this.lastRet)) {\r
-this.cursor = (this.cursor - 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);\r
-this.fence = this.b$["java.util.ArrayDeque"].tail;\r
-}this.lastRet = -1;\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$ArrayDeque$DescendingIterator$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.cursor = 0;\r
-this.fence = 0;\r
-this.lastRet = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, java.util.ArrayDeque, "DescendingIterator", null, java.util.Iterator);\r
-Clazz.prepareFields (c$, function () {\r
-this.cursor = this.b$["java.util.ArrayDeque"].tail;\r
-this.fence = this.b$["java.util.ArrayDeque"].head;\r
-});\r
-Clazz.overrideMethod (c$, "hasNext", \r
-function () {\r
-return this.cursor != this.fence;\r
-});\r
-Clazz.overrideMethod (c$, "next", \r
-function () {\r
-if (this.cursor == this.fence) throw  new java.util.NoSuchElementException ();\r
-this.cursor = (this.cursor - 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);\r
-var a = this.b$["java.util.ArrayDeque"].elements[this.cursor];\r
-if (this.b$["java.util.ArrayDeque"].head != this.fence || a == null) throw  new java.util.ConcurrentModificationException ();\r
-this.lastRet = this.cursor;\r
-return a;\r
-});\r
-Clazz.overrideMethod (c$, "remove", \r
-function () {\r
-if (this.lastRet < 0) throw  new IllegalStateException ();\r
-if (!this.b$["java.util.ArrayDeque"].$delete (this.lastRet)) {\r
-this.cursor = (this.cursor + 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);\r
-this.fence = this.b$["java.util.ArrayDeque"].head;\r
-}this.lastRet = -1;\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"MIN_INITIAL_CAPACITY", 8);\r
-});\r
+Clazz.declarePackage ("java.util");
+Clazz.load (["java.util.AbstractCollection", "$.Iterator", "java.util.Deque"], "java.util.ArrayDeque", ["java.lang.AssertionError", "$.IllegalStateException", "$.NullPointerException", "java.lang.reflect.Array", "java.util.Arrays", "$.ConcurrentModificationException", "$.NoSuchElementException"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.elements = null;
+this.head = 0;
+this.tail = 0;
+if (!Clazz.isClassDefined ("java.util.ArrayDeque.DeqIterator")) {
+java.util.ArrayDeque.$ArrayDeque$DeqIterator$ ();
+}
+if (!Clazz.isClassDefined ("java.util.ArrayDeque.DescendingIterator")) {
+java.util.ArrayDeque.$ArrayDeque$DescendingIterator$ ();
+}
+Clazz.instantialize (this, arguments);
+}, java.util, "ArrayDeque", java.util.AbstractCollection, [java.util.Deque, Cloneable, java.io.Serializable]);
+Clazz.defineMethod (c$, "allocateElements", 
+ function (numElements) {
+var initialCapacity = 8;
+if (numElements >= initialCapacity) {
+initialCapacity = numElements;
+initialCapacity |= (initialCapacity >>> 1);
+initialCapacity |= (initialCapacity >>> 2);
+initialCapacity |= (initialCapacity >>> 4);
+initialCapacity |= (initialCapacity >>> 8);
+initialCapacity |= (initialCapacity >>> 16);
+initialCapacity++;
+if (initialCapacity < 0) initialCapacity >>>= 1;
+}this.elements =  new Array (initialCapacity);
+}, "~N");
+Clazz.defineMethod (c$, "doubleCapacity", 
+ function () {
+var p = this.head;
+var n = this.elements.length;
+var r = n - p;
+var newCapacity = n << 1;
+if (newCapacity < 0) throw  new IllegalStateException ("Sorry, deque too big");
+var a =  new Array (newCapacity);
+System.arraycopy (this.elements, p, a, 0, r);
+System.arraycopy (this.elements, 0, a, r, p);
+this.elements = a;
+this.head = 0;
+this.tail = n;
+});
+Clazz.defineMethod (c$, "copyElements", 
+ function (a) {
+if (this.head < this.tail) {
+System.arraycopy (this.elements, this.head, a, 0, this.size ());
+} else if (this.head > this.tail) {
+var headPortionLen = this.elements.length - this.head;
+System.arraycopy (this.elements, this.head, a, 0, headPortionLen);
+System.arraycopy (this.elements, 0, a, headPortionLen, this.tail);
+}return a;
+}, "~A");
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, java.util.ArrayDeque, []);
+this.elements =  new Array (16);
+});
+Clazz.makeConstructor (c$, 
+function (numElements) {
+Clazz.superConstructor (this, java.util.ArrayDeque, []);
+this.allocateElements (numElements);
+}, "~N");
+Clazz.makeConstructor (c$, 
+function (c) {
+Clazz.superConstructor (this, java.util.ArrayDeque, []);
+this.allocateElements (c.size ());
+this.addAll (c);
+}, "java.util.Collection");
+Clazz.overrideMethod (c$, "addFirst", 
+function (e) {
+if (e == null) throw  new NullPointerException ();
+this.elements[this.head = (this.head - 1) & (this.elements.length - 1)] = e;
+if (this.head == this.tail) this.doubleCapacity ();
+}, "~O");
+Clazz.overrideMethod (c$, "addLast", 
+function (e) {
+if (e == null) throw  new NullPointerException ();
+this.elements[this.tail] = e;
+if ((this.tail = (this.tail + 1) & (this.elements.length - 1)) == this.head) this.doubleCapacity ();
+}, "~O");
+Clazz.overrideMethod (c$, "offerFirst", 
+function (e) {
+this.addFirst (e);
+return true;
+}, "~O");
+Clazz.overrideMethod (c$, "offerLast", 
+function (e) {
+this.addLast (e);
+return true;
+}, "~O");
+Clazz.overrideMethod (c$, "removeFirst", 
+function () {
+var x = this.pollFirst ();
+if (x == null) throw  new java.util.NoSuchElementException ();
+return x;
+});
+Clazz.overrideMethod (c$, "removeLast", 
+function () {
+var x = this.pollLast ();
+if (x == null) throw  new java.util.NoSuchElementException ();
+return x;
+});
+Clazz.overrideMethod (c$, "pollFirst", 
+function () {
+var h = this.head;
+var result = this.elements[h];
+if (result == null) return null;
+this.elements[h] = null;
+this.head = (h + 1) & (this.elements.length - 1);
+return result;
+});
+Clazz.overrideMethod (c$, "pollLast", 
+function () {
+var t = (this.tail - 1) & (this.elements.length - 1);
+var result = this.elements[t];
+if (result == null) return null;
+this.elements[t] = null;
+this.tail = t;
+return result;
+});
+Clazz.overrideMethod (c$, "getFirst", 
+function () {
+var x = this.elements[this.head];
+if (x == null) throw  new java.util.NoSuchElementException ();
+return x;
+});
+Clazz.overrideMethod (c$, "getLast", 
+function () {
+var x = this.elements[(this.tail - 1) & (this.elements.length - 1)];
+if (x == null) throw  new java.util.NoSuchElementException ();
+return x;
+});
+Clazz.overrideMethod (c$, "peekFirst", 
+function () {
+return this.elements[this.head];
+});
+Clazz.overrideMethod (c$, "peekLast", 
+function () {
+return this.elements[(this.tail - 1) & (this.elements.length - 1)];
+});
+Clazz.overrideMethod (c$, "removeFirstOccurrence", 
+function (o) {
+if (o == null) return false;
+var mask = this.elements.length - 1;
+var i = this.head;
+var x;
+while ((x = this.elements[i]) != null) {
+if (o.equals (x)) {
+this.$delete (i);
+return true;
+}i = (i + 1) & mask;
+}
+return false;
+}, "~O");
+Clazz.overrideMethod (c$, "removeLastOccurrence", 
+function (o) {
+if (o == null) return false;
+var mask = this.elements.length - 1;
+var i = (this.tail - 1) & mask;
+var x;
+while ((x = this.elements[i]) != null) {
+if (o.equals (x)) {
+this.$delete (i);
+return true;
+}i = (i - 1) & mask;
+}
+return false;
+}, "~O");
+Clazz.overrideMethod (c$, "add", 
+function (e) {
+this.addLast (e);
+return true;
+}, "~O");
+Clazz.overrideMethod (c$, "offer", 
+function (e) {
+return this.offerLast (e);
+}, "~O");
+Clazz.defineMethod (c$, "remove", 
+function () {
+return this.removeFirst ();
+});
+Clazz.overrideMethod (c$, "poll", 
+function () {
+return this.pollFirst ();
+});
+Clazz.overrideMethod (c$, "element", 
+function () {
+return this.getFirst ();
+});
+Clazz.overrideMethod (c$, "peek", 
+function () {
+return this.peekFirst ();
+});
+Clazz.overrideMethod (c$, "push", 
+function (e) {
+this.addFirst (e);
+}, "~O");
+Clazz.overrideMethod (c$, "pop", 
+function () {
+return this.removeFirst ();
+});
+Clazz.defineMethod (c$, "checkInvariants", 
+ function () {
+});
+Clazz.defineMethod (c$, "$delete", 
+ function (i) {
+this.checkInvariants ();
+var elements = this.elements;
+var mask = elements.length - 1;
+var h = this.head;
+var t = this.tail;
+var front = (i - h) & mask;
+var back = (t - i) & mask;
+if (front >= ((t - h) & mask)) throw  new java.util.ConcurrentModificationException ();
+if (front < back) {
+if (h <= i) {
+System.arraycopy (elements, h, elements, h + 1, front);
+} else {
+System.arraycopy (elements, 0, elements, 1, i);
+elements[0] = elements[mask];
+System.arraycopy (elements, h, elements, h + 1, mask - h);
+}elements[h] = null;
+this.head = (h + 1) & mask;
+return false;
+} else {
+if (i < t) {
+System.arraycopy (elements, i + 1, elements, i, back);
+this.tail = t - 1;
+} else {
+System.arraycopy (elements, i + 1, elements, i, mask - i);
+elements[mask] = elements[0];
+System.arraycopy (elements, 1, elements, 0, t);
+this.tail = (t - 1) & mask;
+}return true;
+}}, "~N");
+Clazz.overrideMethod (c$, "size", 
+function () {
+return (this.tail - this.head) & (this.elements.length - 1);
+});
+Clazz.overrideMethod (c$, "isEmpty", 
+function () {
+return this.head == this.tail;
+});
+Clazz.overrideMethod (c$, "iterator", 
+function () {
+return Clazz.innerTypeInstance (java.util.ArrayDeque.DeqIterator, this, null);
+});
+Clazz.overrideMethod (c$, "descendingIterator", 
+function () {
+return Clazz.innerTypeInstance (java.util.ArrayDeque.DescendingIterator, this, null);
+});
+Clazz.overrideMethod (c$, "contains", 
+function (o) {
+if (o == null) return false;
+var mask = this.elements.length - 1;
+var i = this.head;
+var x;
+while ((x = this.elements[i]) != null) {
+if (o.equals (x)) return true;
+i = (i + 1) & mask;
+}
+return false;
+}, "~O");
+Clazz.defineMethod (c$, "remove", 
+function (o) {
+return this.removeFirstOccurrence (o);
+}, "~O");
+Clazz.overrideMethod (c$, "clear", 
+function () {
+var h = this.head;
+var t = this.tail;
+if (h != t) {
+this.head = this.tail = 0;
+var i = h;
+var mask = this.elements.length - 1;
+do {
+this.elements[i] = null;
+i = (i + 1) & mask;
+} while (i != t);
+}});
+Clazz.defineMethod (c$, "toArray", 
+function () {
+return this.copyElements ( new Array (this.size ()));
+});
+Clazz.defineMethod (c$, "toArray", 
+function (a) {
+var size = this.size ();
+if (a.length < size) a = java.lang.reflect.Array.newInstance (a.getClass ().getComponentType (), size);
+this.copyElements (a);
+if (a.length > size) a[size] = null;
+return a;
+}, "~A");
+Clazz.defineMethod (c$, "clone", 
+function () {
+try {
+var result = Clazz.superCall (this, java.util.ArrayDeque, "clone", []);
+result.elements = java.util.Arrays.copyOf (this.elements, this.elements.length);
+return result;
+} catch (e) {
+if (Clazz.exceptionOf (e, CloneNotSupportedException)) {
+throw  new AssertionError ();
+} else {
+throw e;
+}
+}
+});
+c$.$ArrayDeque$DeqIterator$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.cursor = 0;
+this.fence = 0;
+this.lastRet = -1;
+Clazz.instantialize (this, arguments);
+}, java.util.ArrayDeque, "DeqIterator", null, java.util.Iterator);
+Clazz.prepareFields (c$, function () {
+this.cursor = this.b$["java.util.ArrayDeque"].head;
+this.fence = this.b$["java.util.ArrayDeque"].tail;
+});
+Clazz.overrideMethod (c$, "hasNext", 
+function () {
+return this.cursor != this.fence;
+});
+Clazz.overrideMethod (c$, "next", 
+function () {
+if (this.cursor == this.fence) throw  new java.util.NoSuchElementException ();
+var a = this.b$["java.util.ArrayDeque"].elements[this.cursor];
+if (this.b$["java.util.ArrayDeque"].tail != this.fence || a == null) throw  new java.util.ConcurrentModificationException ();
+this.lastRet = this.cursor;
+this.cursor = (this.cursor + 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);
+return a;
+});
+Clazz.overrideMethod (c$, "remove", 
+function () {
+if (this.lastRet < 0) throw  new IllegalStateException ();
+if (this.b$["java.util.ArrayDeque"].$delete (this.lastRet)) {
+this.cursor = (this.cursor - 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);
+this.fence = this.b$["java.util.ArrayDeque"].tail;
+}this.lastRet = -1;
+});
+c$ = Clazz.p0p ();
+};
+c$.$ArrayDeque$DescendingIterator$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.cursor = 0;
+this.fence = 0;
+this.lastRet = -1;
+Clazz.instantialize (this, arguments);
+}, java.util.ArrayDeque, "DescendingIterator", null, java.util.Iterator);
+Clazz.prepareFields (c$, function () {
+this.cursor = this.b$["java.util.ArrayDeque"].tail;
+this.fence = this.b$["java.util.ArrayDeque"].head;
+});
+Clazz.overrideMethod (c$, "hasNext", 
+function () {
+return this.cursor != this.fence;
+});
+Clazz.overrideMethod (c$, "next", 
+function () {
+if (this.cursor == this.fence) throw  new java.util.NoSuchElementException ();
+this.cursor = (this.cursor - 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);
+var a = this.b$["java.util.ArrayDeque"].elements[this.cursor];
+if (this.b$["java.util.ArrayDeque"].head != this.fence || a == null) throw  new java.util.ConcurrentModificationException ();
+this.lastRet = this.cursor;
+return a;
+});
+Clazz.overrideMethod (c$, "remove", 
+function () {
+if (this.lastRet < 0) throw  new IllegalStateException ();
+if (!this.b$["java.util.ArrayDeque"].$delete (this.lastRet)) {
+this.cursor = (this.cursor + 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);
+this.fence = this.b$["java.util.ArrayDeque"].head;
+}this.lastRet = -1;
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"MIN_INITIAL_CAPACITY", 8);
+});