Spectators and Assistants: Enabling Modular Aspect-Oriented Reasoning by Curtis Clifton and Gary T. Leavens Abstract In current aspect-oriented languages, separate compilation and modular reasoning are not possible. This detracts from comprehensibility and impedes maintenance efforts. We describe language features that would allow aspect-oriented languages to provide separate compilation and modular reasoning. We demonstrate that existing programs written in AspectJ can be easily rewritten using these features. Keywords: Spectators, assistants, aspect-oriented programming, modular reasoning, separate compilation, AspectJ language. 2002 CR Categories: D.3.1 [Programming Languages] Programming Techniques --- Object-oriented programming, aspect-oriented programming; D.3.2 [Programming Languages] Language Classifications --- Object-oriented languages, Java, AspectJ; D.3.3 [Programming Languages] Language Constructs and Features --- control structures, modules, packages, procedures, functions and subroutines, advice, spectators, assistants, aspects; Submitted for publication