code: def _get_projection_axes(self, *axes: AxisIdentifier) -> Tuple[Tuple[int, ...], Tuple[int, ...]]:
          
          axes = [self._get_axis(ax) for ax in axes]
          if not axes:
              raise ValueError("No axis selected for projection")
          if len(axes) != len(set(axes)):
              raise ValueError("Duplicate axes in projection")
          invert = list(range(self.ndim))
          for axis in axes:
              invert.remove(axis)
          axes = tuple(axes)
          invert = tuple(invert)
          return axes, invert
docs: Find axis identifiers for projection and all the remaining ones.
          
          Returns
          -------
          axes: axes to include in the projection
          invert: axes along which to reduce