@Override public Object[] toArray() { return fillArray(new Object[size()]); }
@Override @SuppressWarnings("unchecked") public <T> T[] toArray(T[] ts) { T[] a = ts; int size = size(); if (a.length < size) { a = (T[]) java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size); } if (a.length > size) { a[size] = null; } return (T[]) fillArray(a); }