code: func (m *Memory) Delete(ctx context.Context, key []byte) error {
  	if len(key) == 0 {
  		return trace.BadParameter("missing parameter key")
  	}
  	m.Lock()
  	defer m.Unlock()
  	m.removeExpired()
  	if m.tree.Get(&btreeItem{Item: backend.Item{Key: key}}) == nil {
  		return trace.NotFound("key %q is not found", string(key))
  	}
  	event := backend.Event{
  		Type: backend.OpDelete,
  		Item: backend.Item{
  			Key: key,
  		},
  	}
  	m.processEvent(event)
  	if !m.EventsOff {
  		m.buf.Push(event)
  	}
  	return nil
  }
docs: // Delete deletes item by key, returns NotFound error
  // if item does not exist