Custom(f:Element ‑> Bool)
Tag(tag:String)
Type(type:Class<Element>)
Object(object:Element)
Properties(fields:Map<String, PropertyRule>)
Not(rule:Rule)
Or(rule1:Rule, rule2:Rule)
And(rule1:Rule, rule2:Rule)
Any(rules:Array<Rule>)
All(rules:Array<Rule>)
Parent(rule:Rule)
Children(rule:Rule)
Siblings(rule:Rule)