+1 to that. I also hate it very much. The issue is that I need to run this within the UI Thread (https://github.com/scala-ide/scala-ide/pull/292/files#L37R84, there is a big comment on why I'm doing this hacky thing in the linked code - just scroll up a couple of lines). And I put the logic here because I did not want to duplicate it in the test https://github.com/scala-ide/scala-ide/pull/292/files#L2R216

The fact that I need this hack to make things sort of work is a good indication that something is off, and could very well explain why semantic highlighting coloring can get in a bad state.