Yeah I think that we should make `get annotations` return a mutable list.  From what I can tell the only correct way to update the renderer is by calling `set annotations`, but if you call that with the same array from `get annotations` then the performance should be as good as it can be.  Internally, the virtual renderer does some processing when you call `setAnnotations` that I don't think you can really bypass.

From an app perspective I think you will probably want a higher level API like you describe, to batch things up and just call `set annotations` once when everything is ready to go down the pipe.  But I agree it is best to keep that outside of the ace.dart library.