If a rule is associated with a language key, the rule will be executed only for language nodes, which have this language key, in order to improve the runtime performance. In case of multiple language keys, the rule will be applied to all language nodes having ones of these language keys. Rules without a language key ('undefined') are executed for all language nodes.
An optional type, if the new rule is dedicated for exactly this type. If the given type is removed from the type system, this rule will be automatically removed as well (for all language keys). In case of multiple types, this rule will be removed, after all types are removed. In case of 'undefined', the rule will never be automatically removed.