code: def _split_rules(self, original_rule):
          # type: (Type[Rule]) -> Iterable[Type[Rule]]
          
          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)
docs: 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.