docs: def transmit(self, what=None, to_whom=None):
          """Transmit one or more infos from one node to another.
  
          "what" dictates which infos are sent, it can be:
              (1) None (in which case the node's _what method is called).
              (2) an Info (in which case the node transmits the info)
              (3) a subclass of Info (in which case the node transmits all
                  its infos of that type)
              (4) a list of any combination of the above
          "to_whom" dictates which node(s) the infos are sent to, it can be:
              (1) None (in which case the node's _to_whom method is called)
              (2) a Node (in which case the node transmits to that node)
              (3) a subclass of Node (in which case the node transmits to all
                  nodes of that type it is connected to)
              (4) a list of any combination of the above
          Will additionally raise an error if:
              (1) _what() or _to_whom() returns None or a list containing None.
              (2) what is/contains an info that does not originate from the
                  transmitting node
              (3) to_whom is/contains a node that the transmitting node does not
                  have a not-failed connection with.
          """
          whats = set()
          for what in self.flatten([what]):
              if what is None:
                  what = self._what()
              if inspect.isclass(what) and issubclass(what, Info):
                  whats.update(self.infos(type=what))
              else:
                  whats.add(what)
  
          to_whoms = set()
          for to_whom in self.flatten([to_whom]):
              if to_whom is None:
                  to_whom = self._to_whom()
              if inspect.isclass(to_whom) and issubclass(to_whom, Node):
                  to_whoms.update(self.neighbors(direction="to", type=to_whom))
              else:
                  to_whoms.add(to_whom)
  
          transmissions = []
          vectors = self.vectors(direction="outgoing")
          for what in whats:
              for to_whom in to_whoms:
                  try:
                      vector = [v for v in vectors if v.destination_id == to_whom.id][0]
                  except IndexError:
                      raise ValueError(
                          "{} cannot transmit to {} as it does not have "
                          "a connection to them".format(self, to_whom)
                      )
                  t = Transmission(info=what, vector=vector)
                  transmissions.append(t)
  
          return transmissions