docs: def arrow_from_wid(self, wid):
          """Make a real portal and its arrow from a dummy arrow.
  
          This doesn't handle touch events. It takes a widget as its
          argument: the one the user has been dragging to indicate where
          they want the arrow to go. Said widget ought to be invisible.
          It checks if the dummy arrow connects two real spots first,
          and does nothing if it doesn't.
  
          """
          for spot in self.board.spotlayout.children:
              if spot.collide_widget(wid):
                  whereto = spot
                  break
          else:
              return
          self.board.arrowlayout.add_widget(
              self.board.make_arrow(
                  self.board.character.new_portal(
                      self.board.grabbed.place.name,
                      whereto.place.name,
                      reciprocal=self.reciprocal_portal
                  )
              )
          )