docs: def find_mice(self, direction, mechanism, purviews=False):
          """Return the |MIC| or |MIE| for a mechanism.
  
          Args:
              direction (Direction): :|CAUSE| or |EFFECT|.
              mechanism (tuple[int]): The mechanism to be tested for
                  irreducibility.
  
          Keyword Args:
              purviews (tuple[int]): Optionally restrict the possible purviews
                  to a subset of the subsystem. This may be useful for _e.g._
                  finding only concepts that are "about" a certain subset of
                  nodes.
  
          Returns:
              MaximallyIrreducibleCauseOrEffect: The |MIC| or |MIE|.
          """
          purviews = self.potential_purviews(direction, mechanism, purviews)
  
          if not purviews:
              max_mip = _null_ria(direction, mechanism, ())
          else:
              max_mip = max(self.find_mip(direction, mechanism, purview)
                            for purview in purviews)
  
          if direction == Direction.CAUSE:
              return MaximallyIrreducibleCause(max_mip)
          elif direction == Direction.EFFECT:
              return MaximallyIrreducibleEffect(max_mip)
          return validate.direction(direction)