More ideas: Use a partial evaluator for Scheme to partially evaluate aspects. Some aspects, such as a LoD checker for the class form, should not require the running of the program. Another example would be static pointcuts in AspectJ which are used in conjunction with "declare warning" or "declare error". This would be appropriate if one of you already has some experience with a partial evaluator.