code: @SuppressWarnings("unchecked")
      @Nonnull
      public final A[] toArray(@Nonnull F<Integer, A[]> constructor) {
          int length = this.length;
          A[] target = constructor.apply(length);
          return this.toArray(target);
      }
docs: Converts this list into an array. <p> Due to type erasure, the type of the resulting array
  has to be determined at runtime. Fortunately, you can create a zero length array and this
  method can create an large enough array to contain all the elements. If the given array is
  large enough, this method will put elements in it.
  
  @param constructor The constructor of the target array
  @return The array that contains the elements. It may or may not be the same reference of
  <code>target</code>.