@Override
  public ObjectArray<E> subArray(final long pos, final long len) {
    if(pos < 0 || len < 0 || len > size() - pos) throw new IndexOutOfBoundsException();
    if(len == 0) return empty();
    if(len == size()) return this;
    return new ObjectArray<E>(root.slice(pos, len).getTree());
  }