| import org.checkerframework.checker.nullness.qual.*; |
| |
| // TODO: Add as test |
| public 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; |
| } |
| } |
| } |
| } |