'This subroutine is solely for setting up the ``param_names`` attribute
itself.
See ``_init_param_descriptors`` for the full parameter setup.'

def _init_param_names(cls):

    names = []
    param_map = {}
    param_suffix = cls._slice_offset
    for (idx, model) in enumerate(cls._get_submodels()):
        if (not model.param_names):
            continue
        for param_name in model.param_names:
            name = u'{0}_{1}'.format(param_name, (param_suffix + idx))
            names.append(name)
            param_map[name] = (idx, param_name)
    cls._param_names = tuple(names)
    cls._param_map = param_map
    cls._param_map_inverse = dict(((v, k) for (k, v) in param_map.items()))
