/// <summary>
 /// Instructs the transaction to write the value to the subkey of the key.
 /// </summary>
 /// <remarks>The effect of any previous Put() or Delete() calls on the same subkey
 /// within this transaction will be overwritten by this call.
 /// When the transaction is applied, the new value will overwrite any previous
 /// value that this subkey had (or insert it if it was missing).</remarks>
 public void Put(KeyRef key, ulong subkey, ValueRef value)
 {
     PInvoke_Put(handle, key.handle, subkey, value.handle);
 }
 /// <summary>
 /// Instructs the transaction to check that the subkey has the provided value before
 /// applying the transaction.
 /// The transaction will fail if the value is different, or the subkey is missing.
 /// </summary>
 /// <remarks>The effect of any previous Require* call on the same subkey
 /// within this transaction will be overwritten by this call.</remarks>
 public void RequireValue(KeyRef key, ulong subkey, ValueRef requiredValue)
 {
     PInvoke_RequireValue(handle, key.handle, subkey, requiredValue.handle);
 }