code: func (t *Trie) TryUpdate(key, value []byte) error {
  	k := keybytesToHex(key)
  	if len(value) != 0 {
  		_, n, err := t.insert(t.root, nil, k, valueNode(value))
  		if err != nil {
  			return err
  		}
  		t.root = n
  	} else {
  		_, n, err := t.delete(t.root, nil, k)
  		if err != nil {
  			return err
  		}
  		t.root = n
  	}
  	return nil
  }
docs: // TryUpdate associates key with value in the trie. Subsequent calls to
  // Get will return value. If value has length zero, any existing value
  // is deleted from the trie and calls to Get will return nil.
  //
  // The value bytes must not be modified by the caller while they are
  // stored in the trie.
  //
  // If a node was not found in the database, a MissingNodeError is returned.