text: Clazz.load(["java.util.AbstractSequentialList","$.List","$.ListIterator","$.Queue"],"java.util.LinkedList",["java.lang.IllegalStateException","$.IndexOutOfBoundsException","java.lang.reflect.Array","java.util.ConcurrentModificationException","$.NoSuchElementException"],function(){
  c$=Clazz.decorateAsClass(function(){
  this.$size=0;
  this.voidLink=null;
  Clazz.instantialize(this,arguments);
  },java.util,"LinkedList",java.util.AbstractSequentialList,[java.util.List,java.util.Queue,Cloneable,java.io.Serializable]);
  Clazz.makeConstructor(c$,
  function(){
  Clazz.superConstructor(this,java.util.LinkedList,[]);
  this.voidLink=new java.util.LinkedList.Link(null,null,null);
  this.voidLink.previous=this.voidLink;
  this.voidLink.next=this.voidLink;
  });
  Clazz.makeConstructor(c$,
  function(collection){
  this.construct();
  this.addAll(collection);
  },"java.util.Collection");
  Clazz.defineMethod(c$,"add",
  function(location,object){
  if(0<=location&&location<=this.$size){
  var link=this.voidLink;
  if(location<(Math.floor(this.$size/2))){
  for(var i=0;i<=location;i++){
  link=link.next;
  }
  }else{
  for(var i=this.$size;i>location;i--){
  link=link.previous;
  }
  }var previous=link.previous;
  var newLink=new java.util.LinkedList.Link(object,previous,link);
  previous.next=newLink;
  link.previous=newLink;
  this.$size++;
  this.modCount++;
  }else{
  throw new IndexOutOfBoundsException();
  }},"~N,~O");
  Clazz.defineMethod(c$,"add",
  function(object){
  var oldLast=this.voidLink.previous;
  var newLink=new java.util.LinkedList.Link(object,oldLast,this.voidLink);
  this.voidLink.previous=newLink;
  oldLast.next=newLink;
  this.$size++;
  this.modCount++;
  return true;
  },"~O");
  Clazz.defineMethod(c$,"addAll",
  function(location,collection){
  if(location<0||location>this.$size){
  throw new IndexOutOfBoundsException();
  }var adding=collection.size();
  if(adding==0){
  return false;
  }var previous=this.voidLink;
  if(location<(Math.floor(this.$size/2))){
  for(var i=0;i<location;i++){
  previous=previous.next;
  }
  }else{
  for(var i=this.$size;i>=location;i--){
  previous=previous.previous;
  }
  }var next=previous.next;
  for(var e,$e=collection.iterator();$e.hasNext()&&((e=$e.next())||true);){
  var newLink=new java.util.LinkedList.Link(e,previous,null);
  previous.next=newLink;
  previous=newLink;
  }
  previous.next=next;
  next.previous=previous;
  this.$size+=adding;
  this.modCount++;
  return true;
  },"~N,java.util.Collection");
  Clazz.defineMethod(c$,"addAll",
  function(collection){
  var adding=collection.size();
  if(adding==0){
  return false;
  }var previous=this.voidLink.previous;
  for(var e,$e=collection.iterator();$e.hasNext()&&((e=$e.next())||true);){
  var newLink=new java.util.LinkedList.Link(e,previous,null);
  previous.next=newLink;
  previous=newLink;
  }
  previous.next=this.voidLink;
  this.voidLink.previous=previous;
  this.$size+=adding;
  this.modCount++;
  return true;
  },"java.util.Collection");
  Clazz.defineMethod(c$,"addFirst",
  function(object){
  var oldFirst=this.voidLink.next;
  var newLink=new java.util.LinkedList.Link(object,this.voidLink,oldFirst);
  this.voidLink.next=newLink;
  oldFirst.previous=newLink;
  this.$size++;
  this.modCount++;
  },"~O");
  Clazz.defineMethod(c$,"addLast",
  function(object){
  var oldLast=this.voidLink.previous;
  var newLink=new java.util.LinkedList.Link(object,oldLast,this.voidLink);
  this.voidLink.previous=newLink;
  oldLast.next=newLink;
  this.$size++;
  this.modCount++;
  },"~O");
  Clazz.overrideMethod(c$,"clear",
  function(){
  if(this.$size>0){
  this.$size=0;
  this.voidLink.next=this.voidLink;
  this.voidLink.previous=this.voidLink;
  this.modCount++;
  }});
  Clazz.overrideMethod(c$,"clone",
  function(){
  return new java.util.LinkedList(this);
  });
  Clazz.overrideMethod(c$,"contains",
  function(object){
  var link=this.voidLink.next;
  if(object!=null){
  while(link!==this.voidLink){
  if(object.equals(link.data)){
  return true;
  }link=link.next;
  }
  }else{
  while(link!==this.voidLink){
  if(link.data==null){
  return true;
  }link=link.next;
  }
  }return false;
  },"~O");
  Clazz.overrideMethod(c$,"get",
  function(location){
  if(0<=location&&location<this.$size){
  var link=this.voidLink;
  if(location<(Math.floor(this.$size/2))){
  for(var i=0;i<=location;i++){
  link=link.next;
  }
  }else{
  for(var i=this.$size;i>location;i--){
  link=link.previous;
  }
  }return link.data;
  }throw new IndexOutOfBoundsException();
  },"~N");
  Clazz.defineMethod(c$,"getFirst",
  function(){
  var first=this.voidLink.next;
  if(first!==this.voidLink){
  return first.data;
  }throw new java.util.NoSuchElementException();
  });
  Clazz.defineMethod(c$,"getLast",
  function(){
  var last=this.voidLink.previous;
  if(last!==this.voidLink){
  return last.data;
  }throw new java.util.NoSuchElementException();
  });
  Clazz.overrideMethod(c$,"indexOf",
  function(object){
  var pos=0;
  var link=this.voidLink.next;
  if(object!=null){
  while(link!==this.voidLink){
  if(object.equals(link.data)){
  return pos;
  }link=link.next;
  pos++;
  }
  }else{
  while(link!==this.voidLink){
  if(link.data==null){
  return pos;
  }link=link.next;
  pos++;
  }
  }return-1;
  },"~O");
  Clazz.overrideMethod(c$,"lastIndexOf",
  function(object){
  var pos=this.$size;
  var link=this.voidLink.previous;
  if(object!=null){
  while(link!==this.voidLink){
  pos--;
  if(object.equals(link.data)){
  return pos;
  }link=link.previous;
  }
  }else{
  while(link!==this.voidLink){
  pos--;
  if(link.data==null){
  return pos;
  }link=link.previous;
  }
  }return-1;
  },"~O");
  Clazz.defineMethod(c$,"listIterator",
  function(location){
  return new java.util.LinkedList.LinkIterator(this,location);
  },"~N");
  Clazz.defineMethod(c$,"remove",
  function(location){
  if(0<=location&&location<this.$size){
  var link=this.voidLink;
  if(location<(Math.floor(this.$size/2))){
  for(var i=0;i<=location;i++){
  link=link.next;
  }
  }else{
  for(var i=this.$size;i>location;i--){
  link=link.previous;
  }
  }var previous=link.previous;
  var next=link.next;
  previous.next=next;
  next.previous=previous;
  this.$size--;
  this.modCount++;
  return link.data;
  }throw new IndexOutOfBoundsException();
  },"~N");
  Clazz.defineMethod(c$,"remove",
  function(object){
  var link=this.voidLink.next;
  if(object!=null){
  while(link!==this.voidLink&&!object.equals(link.data)){
  link=link.next;
  }
  }else{
  while(link!==this.voidLink&&link.data!=null){
  link=link.next;
  }
  }if(link===this.voidLink){
  return false;
  }var next=link.next;
  var previous=link.previous;
  previous.next=next;
  next.previous=previous;
  this.$size--;
  this.modCount++;
  return true;
  },"~O");
  Clazz.defineMethod(c$,"removeFirst",
  function(){
  var first=this.voidLink.next;
  if(first!==this.voidLink){
  var next=first.next;
  this.voidLink.next=next;
  next.previous=this.voidLink;
  this.$size--;
  this.modCount++;
  return first.data;
  }throw new java.util.NoSuchElementException();
  });
  Clazz.defineMethod(c$,"removeLast",
  function(){
  var last=this.voidLink.previous;
  if(last!==this.voidLink){
  var previous=last.previous;
  this.voidLink.previous=previous;
  previous.next=this.voidLink;
  this.$size--;
  this.modCount++;
  return last.data;
  }throw new java.util.NoSuchElementException();
  });
  Clazz.overrideMethod(c$,"set",
  function(location,object){
  if(0<=location&&location<this.$size){
  var link=this.voidLink;
  if(location<(Math.floor(this.$size/2))){
  for(var i=0;i<=location;i++){
  link=link.next;
  }
  }else{
  for(var i=this.$size;i>location;i--){
  link=link.previous;
  }
  }var result=link.data;
  link.data=object;
  return result;
  }throw new IndexOutOfBoundsException();
  },"~N,~O");
  Clazz.overrideMethod(c$,"size",
  function(){
  return this.$size;
  });
  Clazz.overrideMethod(c$,"offer",
  function(o){
  this.add(o);
  return true;
  },"~O");
  Clazz.overrideMethod(c$,"poll",
  function(){
  return this.$size==0?null:this.removeFirst();
  });
  Clazz.defineMethod(c$,"remove",
  function(){
  return this.removeFirst();
  });
  Clazz.overrideMethod(c$,"peek",
  function(){
  var first=this.voidLink.next;
  return first===this.voidLink?null:first.data;
  });
  Clazz.overrideMethod(c$,"element",
  function(){
  return this.getFirst();
  });
  Clazz.defineMethod(c$,"toArray",
  function(){
  var index=0;
  var contents=new Array(this.$size);
  var link=this.voidLink.next;
  while(link!==this.voidLink){
  contents[index++]=link.data;
  link=link.next;
  }
  return contents;
  });
  Clazz.defineMethod(c$,"toArray",
  function(contents){
  var index=0;
  if(this.$size>contents.length){
  var ct=contents.getClass().getComponentType();
  contents=java.lang.reflect.Array.newInstance(ct,this.$size);
  }var link=this.voidLink.next;
  while(link!==this.voidLink){
  contents[index++]=link.data;
  link=link.next;
  }
  if(index<contents.length){
  contents[index]=null;
  }return contents;
  },"~A");
  Clazz.pu$h(self.c$);
  c$=Clazz.decorateAsClass(function(){
  this.data=null;
  this.previous=null;
  this.next=null;
  Clazz.instantialize(this,arguments);
  },java.util.LinkedList,"Link");
  Clazz.makeConstructor(c$,
  function(a,b,c){
  this.data=a;
  this.previous=b;
  this.next=c;
  },"~O,java.util.LinkedList.Link,java.util.LinkedList.Link");
  c$=Clazz.p0p();
  Clazz.pu$h(self.c$);
  c$=Clazz.decorateAsClass(function(){
  this.pos=0;
  this.expectedModCount=0;
  this.list=null;
  this.link=null;
  this.lastLink=null;
  Clazz.instantialize(this,arguments);
  },java.util.LinkedList,"LinkIterator",null,java.util.ListIterator);
  Clazz.makeConstructor(c$,
  function(a,b){
  this.list=a;
  this.expectedModCount=this.list.modCount;
  if(0<=b&&b<=this.list.$size){
  this.link=this.list.voidLink;
  if(b<Math.floor(this.list.$size/2)){
  for(this.pos=-1;this.pos+1<b;this.pos++){
  this.link=this.link.next;
  }
  }else{
  for(this.pos=this.list.$size;this.pos>=b;this.pos--){
  this.link=this.link.previous;
  }
  }}else{
  throw new IndexOutOfBoundsException();
  }},"java.util.LinkedList,~N");
  Clazz.overrideMethod(c$,"add",
  function(a){
  if(this.expectedModCount==this.list.modCount){
  var b=this.link.next;
  var c=new java.util.LinkedList.Link(a,this.link,b);
  this.link.next=c;
  b.previous=c;
  this.link=c;
  this.lastLink=null;
  this.pos++;
  this.expectedModCount++;
  this.list.$size++;
  this.list.modCount++;
  }else{
  throw new java.util.ConcurrentModificationException();
  }},"~O");
  Clazz.overrideMethod(c$,"hasNext",
  function(){
  return this.link.next!==this.list.voidLink;
  });
  Clazz.overrideMethod(c$,"hasPrevious",
  function(){
  return this.link!==this.list.voidLink;
  });
  Clazz.overrideMethod(c$,"next",
  function(){
  if(this.expectedModCount==this.list.modCount){
  var a=this.link.next;
  if(a!==this.list.voidLink){
  this.lastLink=this.link=a;
  this.pos++;
  return this.link.data;
  }throw new java.util.NoSuchElementException();
  }throw new java.util.ConcurrentModificationException();
  });
  Clazz.overrideMethod(c$,"nextIndex",
  function(){
  return this.pos+1;
  });
  Clazz.overrideMethod(c$,"previous",
  function(){
  if(this.expectedModCount==this.list.modCount){
  if(this.link!==this.list.voidLink){
  this.lastLink=this.link;
  this.link=this.link.previous;
  this.pos--;
  return this.lastLink.data;
  }throw new java.util.NoSuchElementException();
  }throw new java.util.ConcurrentModificationException();
  });
  Clazz.overrideMethod(c$,"previousIndex",
  function(){
  return this.pos;
  });
  Clazz.overrideMethod(c$,"remove",
  function(){
  if(this.expectedModCount==this.list.modCount){
  if(this.lastLink!=null){
  var a=this.lastLink.next;
  var b=this.lastLink.previous;
  a.previous=b;
  b.next=a;
  if(this.lastLink===this.link){
  this.pos--;
  }this.link=b;
  this.lastLink=null;
  this.expectedModCount++;
  this.list.$size--;
  this.list.modCount++;
  }else{
  throw new IllegalStateException();
  }}else{
  throw new java.util.ConcurrentModificationException();
  }});
  Clazz.overrideMethod(c$,"set",
  function(a){
  if(this.expectedModCount==this.list.modCount){
  if(this.lastLink!=null){
  this.lastLink.data=a;
  }else{
  throw new IllegalStateException();
  }}else{
  throw new java.util.ConcurrentModificationException();
  }},"~O");
  c$=Clazz.p0p();
  });
  