public static <T> List<T> plus(List<T> self, int index, T[] items) {
        return plus(self, index, Arrays.asList(items));
    }
public static < T > List < T > plus ( List < T > self , int index , T [ ] items ) { return plus ( self , index , Arrays . asList ( items ) ) ; }
Creates a new List by inserting all of the elements in the specified array
to the elements from the original List at the specified index.
Shifts the element currently at that index (if any) and any subsequent
elements to the right (increasing their indices).
The new elements will appear in the resulting List in the order that
they occur in the original array.
The behavior of this operation is undefined if the list or
array operands are modified while the operation is in progress.
The original list and array operands remain unchanged.

<pre class="groovyTestCase">
def items = [1, 2, 3]
def newItems = items.plus(2, 'a'..'c' as String[])
assert newItems == [1, 2, 'a', 'b', 'c', 3]
assert items == [1, 2, 3]
</pre>

See also <code>addAll</code> for similar functionality with modify semantics, i.e. which performs
the changes on the original list itself.

@param self  an original list
@param items array containing elements to be merged with elements from the original list
@param index index at which to insert the first element from the specified array
@return the new list
@see #plus(List, int, List)
@since 1.8.1