Implements support for rules which determine which objects are allowed
to contain other objects, typically by type.