/// <summary>Write a key inside a subspace</summary>
        /// <example>
        /// Both lines are equivalent:
        /// tr.Set(new FdbSubspace("Hello"), FdbTuple.Create("World"), some_value);
        /// tr.Set(FdbTuple.Create("Hello", "World"), some_value);
        /// </example>
        public static void Set(this IFdbTransaction trans, [NotNull] FdbSubspace subspace, [NotNull] IFdbTuple key, Slice value)
        {
            Contract.Requires(trans != null && subspace != null && key != null);

            trans.Set(subspace.Pack(key), value);
        }
        /// <summary>Read a key inside a subspace</summary>
        /// <example>
        /// Both lines are equivalent:
        /// tr.GetAsync(new FdbSubspace("Hello"), FdbTuple.Create("World"));
        /// tr.GetAsync(FdbTuple.Create("Hello", "World"));
        /// </example>
        public static Task <Slice> GetAsync(this IFdbReadOnlyTransaction trans, [NotNull] FdbSubspace subspace, IFdbTuple key)
        {
            Contract.Requires(trans != null && subspace != null);

            return(trans.GetAsync(subspace.Pack(key)));
        }