private List<Integer> processArrays(int low, int high) {

        // checking input parameter for null
        if (numbers == null || helper == null) {
            return null;
        }

        // check if low is smaller then high, if not then the array is sorted
        if (low < high) {
            // Get the index of the element which is in the middle
            int middle = low + (high - low) / 2;

            // Sort the left side of the array
            processArrays(low, middle);

            // Sort the right side of the array
            processArrays(middle + 1, high);

            // Merging both arrays
            numbers = mergeArrays(low, high, middle);
        }
        return new ArrayList<>(Arrays.asList(numbers));
    }