I think it would be better to do the copy before removing the element, and to make sure the same value is both in the controller and in the data model. This is important so that the `onchange` listener is not called more than needed.

I mean something like:
```js
var newSuggestions = aria.utils.Json.copy(controller.selectedSuggestions);
arrayUtil.removeAt(newSuggestions, indexToRemove);
var report = controller.checkValue(newSuggestions);
this._reactToControllerReport(report);
```
`controller.checkValue` will take care of updating `controller.selectedSuggestionsLabelsArray` and `_reactToControllerReport` will take care of calling `setProperty` and `evalCallback`.