Splits Rule class with multiple rules into separate classes, each with only one rule defined.
        The created rules inherits from SplitRule.
        If parameter define only one rule, its not split.
        :param original_rule: Rule to split.
        :return: Iterable of rules derived from the parameter.

def _split_rules(self, original_rule):
        # type: (Type[Rule]) -> Iterable[Type[Rule]]
        """
        Splits Rule class with multiple rules into separate classes, each with only one rule defined.
        The created rules inherits from SplitRule.
        If parameter define only one rule, its not split.
        :param original_rule: Rule to split.
        :return: Iterable of rules derived from the parameter.
        """
        if original_rule.count == 1:
            return [original_rule]

        def yielding(original_rule):
            for rule_index in range(original_rule.count):
                yield SplitRule._create_class(original_rule, rule_index)

        return yielding(original_rule)