Main entrypoint method.

        Returns
        -------
        new_nodes : `list`
            Nodes to add to the doctree.

def run(self):
        """Main entrypoint method.

        Returns
        -------
        new_nodes : `list`
            Nodes to add to the doctree.
        """
        env = self.state.document.settings.env

        try:
            class_name = self.arguments[0]
        except IndexError:
            raise SphinxError(
                '{0} directive requires a class name as an '
                'argument'.format(self.directive_name)
            )
        self._logger.debug('%s using class %s',
                           self.directive_name, class_name)

        summary_node = self._create_summary_node(class_name)

        # target_id = format_task_id(class_name)
        target_id = self.get_target_id(class_name)
        target_node = nodes.target('', '', ids=[target_id])

        # Store these task/configurable topic nodes in the environment for
        # later cross referencing.
        if not hasattr(env, 'lsst_task_topics'):
            env.lsst_task_topics = {}
        env.lsst_task_topics[target_id] = {
            'docname': env.docname,
            'lineno': self.lineno,
            'target': target_node,
            'summary_node': summary_node,
            'fully_qualified_name': class_name,
            'type': self.get_type(class_name)
        }

        return [target_node]