out (result)
{
auto tinext = unqualify(ti.next);
auto sizeelem = tinext.tsize;
debug(PRINTF)
printf("_d_arraycatT(%d,%p ~ %d,%p sizeelem = %d => %d,%p)\n", x.length, x.ptr, y.length, y.ptr, sizeelem, result.length, result.ptr);
assert (result.length == x.length + y.length);
if (!hasPostblit(tinext))
{
for (
size_t i = 0; i < x.length * sizeelem; i++)
assert ((cast(byte*)result)[i] == (cast(byte*)x)[i]);
for (
size_t i = 0; i < y.length * sizeelem; i++)
assert ((cast(byte*)result)[x.length * sizeelem + i] == (cast(byte*)y)[i]);
}
size_t cap = GC.sizeOf(result.ptr);
assert (!cap || cap > result.length * sizeelem);
}