code: def _create_class(rule, index):
          # type: (Type[Rule], int) -> Type[SplitRule]
          
          name = 'SplitRule[' + rule.__name__ + ';' + str(index) + ']'
          created = type(name, (SplitRule,), SplitRule.__dict__.copy())  # type: Type[SplitRule]
          created.rule = rule.rules[index]
          created.rule_index = index
          created.from_rule = rule
          return created
docs: Create subtype of SplitRule based on rule.
          :param rule: Rule from which the SplitRule derive.
          :param index: Index of the rule (in original Rule class) to use for SplitRule.
          :return: Class inherited from SplitRule representing rule at index.