import org.checkerframework.checker.nullness.qual.*; //TODO: Add as test class RefineArray { public static <T> T[] concat(T @Nullable [] a, T @Nullable [] b) { if (a == null) { if (b != null) { return b; } else { @SuppressWarnings("unchecked") T[] result = (T[]) new Object[0]; return result; } } else { if (b == null) { return a; } else { @SuppressWarnings("unchecked") T[] result = (T[]) new @MonotonicNonNull Object[a.length + b.length]; System.arraycopy(a, 0, result, 0, a.length); System.arraycopy(b, 0, result, a.length, b.length); return result; } } } }