code: public static <T> T[] insert(final T[] a, final int index, final T element) {
          N.checkArgNotNull(a, "a");
  
          final T[] newArray = N.newArray(a.getClass().getComponentType(), a.length + 1);
  
          if (index > 0) {
              copy(a, 0, newArray, 0, index);
          }
  
          newArray[index] = element;
  
          if (index < a.length) {
              copy(a, index, newArray, index + 1, a.length - index);
          }
  
          return newArray;
      }
docs: <p>
  Inserts the specified element at the specified position in the array.
  Shifts the element currently at that position (if any) and any subsequent
  elements to the right (adds one to their indices).
  </p>
  
  <p>
  This method returns a new array with the same elements of the input array
  plus the given element on the specified position. The component type of
  the returned array is always the same as that of the input array.
  </p>
  
  @param a
  @param index
  the position of the new object
  @param element
  the object to add
  @return A new array containing the existing elements and the new element
  @throws NullPointerException if the specified <code>a</code> is <code>null</code>.