the rules are fixed, and we want to support all of them (or throw a useful error message). this will also become the base for a generic renderer system, so let's just list all the rules statically.
the rules are fixed, and we want to support all of them (or throw a useful error message). this will also become the base for a generic renderer system, so let's just list all the rules statically.