docs: def update_from_delta(self, delta, *args):
          """Apply the changes described in the dict ``delta``."""
          for (node, extant) in delta.get('nodes', {}).items():
              if extant:
                  if node in delta.get('node_val', {}) \
                          and 'location' in delta['node_val'][node]\
                          and node not in self.pawn:
                      self.add_pawn(node)
                  elif node not in self.spot:
                      self.add_spot(node)
                      spot = self.spot[node]
                      if '_x' not in spot.place or '_y' not in spot.place:
                          self.spots_unposd.append(spot)
              else:
                  if node in self.pawn:
                      self.rm_pawn(node)
                  if node in self.spot:
                      self.rm_spot(node)
          for (node, stats) in delta.get('node_val', {}).items():
              if node in self.spot:
                  spot = self.spot[node]
                  x = stats.get('_x')
                  y = stats.get('_y')
                  if x is not None:
                      spot.x = x * self.width
                  if y is not None:
                      spot.y = y * self.height
                  if '_image_paths' in stats:
                      spot.paths = stats['_image_paths'] or spot.default_image_paths
              elif node in self.pawn:
                  pawn = self.pawn[node]
                  if 'location' in stats:
                      pawn.loc_name = stats['location']
                  if '_image_paths' in stats:
                      pawn.paths = stats['_image_paths'] or pawn.default_image_paths
              else:
                  Logger.warning(
                      "Board: diff tried to change stats of node {} "
                      "but I don't have a widget for it".format(node)
                  )
          for (orig, dests) in delta.get('edges', {}).items():
              for (dest, extant) in dests.items():
                  if extant and (orig not in self.arrow or dest not in self.arrow[orig]):
                      self.add_arrow(orig, dest)
                  elif not extant and orig in self.arrow and dest in self.arrow[orig]:
                      self.rm_arrow(orig, dest)