@classmethod
def register_property_set_type(cls, name, group_yaml_type, estimator_type):
    """(class method) Register new property set type.

        Parameters
        ----------
        name : str
            Name of new property set type.
        group_yaml_type : str
            Name of property set type in the YAML type namespace.
        estimator_type : class
            The provided class is instantiated when an estimate is to be made
            for a particular set of groups.  The constructor should accept the
            following parameters:

                library : :class:`GroupLibrary`
                    library which is to be used to estimate these properties.
                groups : mapping
                    Map from :class:`Group` to int or float specifying counts
                    of each group in the chemical structure.
        """
    if name in cls._property_set_group_yaml_types:
        raise KeyError('Property set %r already registered.' % name)
    cls._property_set_group_yaml_types[name] = group_yaml_type
    cls._property_set_estimator_types[name] = estimator_type
