code: func (s *Snapshotter) Remove(ctx context.Context, key string) error {
  	_, blob, err := s.GetBlob(ctx, key)
  	if err != nil {
  		return err
  	}
  
  	blobs, err := s.opt.MetadataStore.Search(index(blob))
  	if err != nil {
  		return err
  	}
  
  	if err := s.SnapshotterBase.Remove(ctx, key); err != nil {
  		return err
  	}
  
  	if len(blobs) == 1 && blobs[0].ID() == key { // last snapshot
  		if err := s.opt.Content.Delete(ctx, blob); err != nil {
  			logrus.Errorf("failed to delete blob %v: %+v", blob, err)
  		}
  	}
  	return nil
  }
docs: // Remove also removes a reference to a blob. If it is a last reference then it deletes it the blob as well
  // Remove is not safe to be called concurrently