I have made the array returned by `get annotations` mutable, for convenience.  I have also made a number of optimizations to the copying / converting based on the advice in this thread:

https://groups.google.com/a/dartlang.org/forum/#!searchin/misc/JsArray/misc/R5qFqYTAel8/yJMUt2DWXdUJ

However, the returned list is still a copy of the underlying javascript array.  As mentioned in the above thread, the `dart:js` library is designed around copying and thus `ace.dart` is also copying.  I think it would be possible to concoct a way to manipulate directly the underling javascript array as mentioned in that thread, but it would be a complex solution and inconsistent with the rest of `ace.dart` at this point.  I'd rather keep things uniform / simple and wait to see if real performance problems arise and optimize then.  My gut feeling is that there won't be a problem here, and it will be prudent to limit calls to `set annotations` to once per 'update', depending on what that means in the context of your app.