code: def _see_node(self, node_id, fringe, dist, w_wait_in=0):
          seen, dists = self.seen, self.dist
          wait_in = self.nodes[node_id]['wait_inputs']
          self._update_meeting(node_id, dist)
          if self.check_wait_in(wait_in, node_id):
              pass
          elif node_id in dists:
              if dist < dists[node_id]:
                  raise DispatcherError('Contradictory paths found: '
                                        'negative weights?', sol=self)
          elif node_id not in seen or dist < seen[node_id]:
              seen[node_id] = dist
              index = self.nodes[node_id]['index']
              vd = (w_wait_in + int(wait_in), node_id, self.index + index)
              heapq.heappush(fringe, (dist, vd, (node_id, self)))
              return True
          return False