code: func (m *Memory) KeepAlive(ctx context.Context, lease backend.Lease, expires time.Time) error {
  	if lease.IsEmpty() {
  		return trace.BadParameter("lease is empty")
  	}
  	m.Lock()
  	defer m.Unlock()
  	m.removeExpired()
  	i := m.tree.Get(&btreeItem{Item: backend.Item{Key: lease.Key}})
  	if i == nil {
  		return trace.NotFound("key %q is not found", string(lease.Key))
  	}
  	item := i.(*btreeItem).Item
  	item.Expires = expires
  	event := backend.Event{
  		Type: backend.OpPut,
  		Item: item,
  	}
  	m.processEvent(event)
  	if !m.EventsOff {
  		m.buf.Push(event)
  	}
  	return nil
  }
docs: // KeepAlive updates TTL on the lease