Perform the requested projection(s).

        Note:
            All cuts on the original histograms will be reset when this function is completed.

        Args:
            kwargs (dict): Additional named args to be passed to projection_name(...) and output_key_name(...)
        Returns:
            The projected histogram(s). The projected histograms are also stored in ``output_observable``.

def project(self, **kwargs: Dict[str, Any]) -> Union[Hist, Dict[str, Hist]]:
        """ Perform the requested projection(s).

        Note:
            All cuts on the original histograms will be reset when this function is completed.

        Args:
            kwargs (dict): Additional named args to be passed to projection_name(...) and output_key_name(...)
        Returns:
            The projected histogram(s). The projected histograms are also stored in ``output_observable``.
        """
        if self.single_observable_projection:
            return self._project_single_observable(**kwargs)
        else:
            return self._project_dict(**kwargs)