'Properties for Introspection results.
:return:
:rtype:'

@property
def properties(self):

    properties = defaultdict(list)
    for pattern in self.patterns:
        for (key, values) in pattern.properties.items():
            extend_safe(properties[key], values)
    for rule in self.rules:
        for (key, values) in rule.properties.items():
            extend_safe(properties[key], values)
    return properties
