docs: def find_multiplex_by_name(self, multiplex_name: str) -> Multiplex:
          """ 
          Find and return a multiplex in the influence graph with the given name.
          Raise an AttributeError if there is no multiplex in the graph with the given name.
          """
          for multiplex in self.multiplexes:
              if multiplex.name == multiplex_name:
                  return multiplex
          raise AttributeError(f'multiplex "{multiplex_name}" does not exist')