@SuppressWarnings("unchecked")
 public <T> T[] toArray(T[] a) {
   int sz = this.size;
   return (T[])
       ArrayTools.fill(
           ((a.length >= sz) ? a : ArrayTools.newInstance(a, sz)), 0, sz, this.getElement());
 }