Instead of relying on the user providing the 'rewrite' flag the existence of rewrites could be inferred from the specification. The same is true for circular attributes.
Both rewrites and circular attributes, have flags in the configuration: rewriteEnabled and circularEnabled, which are used in the code generation. The rewriteEnabled flag is set to true based on the existence of the rewrite flag, while the circularEnabled flag is always true. Given that the circularEnabled flag adds an additional cache check to non-circular attributes, it would be better to infer the value from the actual existence of circular attributes in the specification. With regard to the rewrite flag, are there really any good reasons for excluding existing rewrites?