code: func (rule *Rule) Equal(other *Rule) bool {
  	if (rule.Kind != other.Kind) ||
  		(rule.Prelude != other.Prelude) ||
  		(rule.Name != other.Name) {
  		return false
  	}
  
  	if (len(rule.Selectors) != len(other.Selectors)) ||
  		(len(rule.Declarations) != len(other.Declarations)) ||
  		(len(rule.Rules) != len(other.Rules)) {
  		return false
  	}
  
  	for i, sel := range rule.Selectors {
  		if sel != other.Selectors[i] {
  			return false
  		}
  	}
  
  	for i, decl := range rule.Declarations {
  		if !decl.Equal(other.Declarations[i]) {
  			return false
  		}
  	}
  
  	for i, rule := range rule.Rules {
  		if !rule.Equal(other.Rules[i]) {
  			return false
  		}
  	}
  
  	return true
  }
docs: // Equal returns true if both rules are equals