<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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
                )
            )
        )