src/main/java/wycc/util/ArrayUtils.java
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