Developers spend a considerable amount of time comprehending code and building accurate mental models of the code. Understanding the relationships between software features within IDEs is difficult, with information split across different visual hierarchies making navigation cumbersome. Canvas-based IDEs mitigate some of the navigation costs by allowing relevant information to be presented in groups. However, these groups have no explicit way of capturing and sharing the meaning of different spatial layouts. In this thesis, we present annotations in a canvas-based IDE called Synectic to address this concern. Synectic allows users to arrange relevant information in groups, attach meaning to the arrangement, and externalize thoughts and relationships between artifacts through annotations. To study the effects of these annotations on comprehension, we conducted a user study of newcomers performing code comprehension tasks comparing Synectic and Eclipse. The results show annotations in Synectic increase the developer's accuracy, while reducing cognitive load during newcomer comprehension tasks.