docs: def make_arrow(self, portal):
          """Make an :class:`Arrow` to represent a :class:`Portal`, store it,
          and return it.
  
          """
          if (
                  portal["origin"] not in self.spot or
                  portal["destination"] not in self.spot
          ):
              raise ValueError(
                  "An :class:`Arrow` should only be made after "
                  "the :class:`Spot`s it connects"
              )
          if (
                  portal["origin"] in self.arrow and
                  portal["destination"] in self.arrow[portal["origin"]]
          ):
              raise KeyError("Already have an Arrow for this Portal")
          return self._core_make_arrow(portal, self.spot[portal['origin']], self.spot[portal['destination']], self.arrow)