public static <T> T[] append(Class<T> type, T lhs, T... rhs) {
		T[] rs = (T[]) Array.newInstance(type, rhs.length+1);
		System.arraycopy(rhs, 0, rs, 1, rhs.length);
		rs[0] = lhs;
		return rs;
	}
public static <T> T[] append(Class<T> type, T lhs, T... rhs) {
		T[] rs = (T[]) Array.newInstance(type, rhs.length+1);
		System.arraycopy(rhs, 0, rs, 1, rhs.length);
		rs[0] = lhs;
		return rs;
	}
public static < T > T [ ] append ( Class < T > type , T lhs , T ... rhs ) { T [ ] rs = ( T [ ] ) Array . newInstance ( type , rhs . length + 1 ) ; System . arraycopy ( rhs , 0 , rs , 1 , rhs . length ) ; rs [ 0 ] = lhs ; return rs ; }
Append an element onto an array of unknown type together, producing a
fresh array whose length equals that of the second plus one.

@param lhs
The left-hand side. This element will be copied
first into the resulting array.
@param rhs
The right-hand side. Elements of this array will be copied
last into the resulting array.
@return
Append an element onto an array of unknown type together producing a fresh array whose length equals that of the second plus one .