public TShortArrayList inverseGrep(final TShortProcedure condition) {
   final TShortArrayList list = new TShortArrayList();
   for (int i = 0; i < this._pos; ++i) {
     if (!condition.execute(this._data[i])) {
       list.add(this._data[i]);
     }
   }
   return list;
 }
 public Object clone() {
   TShortArrayList list = null;
   try {
     list = (TShortArrayList) super.clone();
     list._data = this.toNativeArray();
   } catch (CloneNotSupportedException ex) {
   }
   return list;
 }
 private short[] getVisibleFromOutdoor() {
   if (this.m_visibleFromOutdoor == null) {
     final int size = this.size();
     final TShortArrayList list = new TShortArrayList(size);
     for (int i = 0; i < size; ++i) {
       final short layer = this.getQuickKey(i);
       if (layer <= 0) {
         list.add(layer);
       }
     }
     this.m_visibleFromOutdoor = list.toNativeArray();
   }
   return this.m_visibleFromOutdoor;
 }
 public TShortArrayList subList(final int begin, final int end) {
   if (end < begin) {
     throw new IllegalArgumentException("end index " + end + " greater than begin index " + begin);
   }
   if (begin < 0) {
     throw new IndexOutOfBoundsException("begin index can not be < 0");
   }
   if (end > this._data.length) {
     throw new IndexOutOfBoundsException("end index < " + this._data.length);
   }
   final TShortArrayList list = new TShortArrayList(end - begin);
   for (int i = begin; i < end; ++i) {
     list.add(this._data[i]);
   }
   return list;
 }
 public boolean equals(final Object other) {
   if (other == this) {
     return true;
   }
   if (!(other instanceof TShortArrayList)) {
     return false;
   }
   final TShortArrayList that = (TShortArrayList) other;
   if (that.size() != this.size()) {
     return false;
   }
   int i = this._pos;
   while (i-- > 0) {
     if (this._data[i] != that._data[i]) {
       return false;
     }
   }
   return true;
 }