public static IRubyObject concatArraysDirect(ThreadContext context, Object original, IRubyObject additional) {
Ruby runtime = context.runtime;
int oldLength = Array.getLength(original);
int addLength = (int)((RubyFixnum)RuntimeHelpers.invoke(context, additional, "length")).getLongValue();
ArrayJavaProxy proxy = ArrayUtils.newProxiedArray(runtime, original.getClass().getComponentType(), oldLength + addLength);
Object newArray = proxy.getObject();
System.arraycopy(original, 0, newArray, 0, oldLength);
for (int i = 0; i < addLength; i++) {
RuntimeHelpers.invoke(context, proxy, "[]=", runtime.newFixnum(oldLength + i),