<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def pick(self, starting_node=None):
 """ Pick a node on the graph based on the links in a starting node. Additionally, set ``self.current_node`` to the newly picked node. * if ``starting_node`` is specified, start from there * if ``starting_node`` is ``None``, start from ``self.current_node`` * if ``starting_node`` is ``None`` and ``self.current_node`` is ``None``, pick a uniformally random node in ``self.node_list`` Args: starting_node (Node):
 ``Node`` to pick from. Returns: Node Example: ['One', 'One', 'Two', 'One', 'One'] """

        if starting_node is None:
            if self.current_node is None:
                random_node = random.choice(self.node_list)
                self.current_node = random_node
                return random_node
            else:
                starting_node = self.current_node
        # Use weighted_choice on start_node.link_list
        self.current_node = weighted_choice(
            [(link.target, link.weight) for link in starting_node.link_list])
        return self.current_node