Check and insert semicolons asynchronously. 

To keep the user interface responsive, handle annotation model changes,
error checking and semicolon insertion concurrently and asynchronously
in a separate thread.
Refactor file.