code: def put(self, key, value):
      '''Stores the object named by `key`. Follows links.'''
      # if value is a link, don't follow links
      if self._link_for_value(value):
        super(SymlinkDatastore, self).put(key, value)
        return
  
      # if `key` points to a symlink, need to follow it.
      current_value = super(SymlinkDatastore, self).get(key)
      link_key = self._link_for_value(current_value)
      if link_key:
        self.put(link_key, value) # self.put: could be another link.
      else:
        super(SymlinkDatastore, self).put(key, valuef put(self, key, value):
      '''Stores the object named by `key`. Follows links.'''
      # if value is a link, don't follow links
      if self._link_for_value(value):
        super(SymlinkDatastore, self).put(key, value)
        return
  
      # if `key` points to a symlink, need to follow it.
      current_value = super(SymlinkDatastore, self).get(key)
      link_key = self._link_for_value(current_value)
      if link_key:
        self.put(link_key, value) # self.put: could be another link.
      else:
        super(SymlinkDatastore, self).put(key, value)
docs: Stores the object named by `key`. Follows links.