/// <summary>Merge an array of keys with the subspace's prefix, all sharing the same buffer</summary>
 /// <param name="keys">Array of keys to pack</param>
 /// <returns>Array of slices (for all keys) that share the same underlying buffer</returns>
 public Slice[] ConcatKeys(IEnumerable <Slice> keys)
 {
     if (keys == null)
     {
         throw new ArgumentNullException("keys");
     }
     //REVIEW: what to do with keys that are Slice.Nil ?
     return(Slice.ConcatRange(GetKeyPrefix(), keys));
 }
 /// <summary>Merge an array of keys with the subspace's prefix, all sharing the same buffer</summary>
 /// <param name="keys">Array of keys to pack</param>
 /// <returns>Array of slices (for all keys) that share the same underlying buffer</returns>
 public Slice[] ConcatKeys <TKey>(IEnumerable <TKey> keys)
     where TKey : IFdbKey
 {
     if (keys == null)
     {
         throw new ArgumentNullException("keys");
     }
     //REVIEW: what to do with keys that are Slice.Nil ?
     return(Slice.ConcatRange(GetKeyPrefix(), keys.Select(key => key.ToFoundationDbKey())));
 }
 /// <summary>Merge an array of keys with the subspace's prefix, all sharing the same buffer</summary>
 /// <param name="keys">Array of keys to pack</param>
 /// <returns>Array of slices (for all keys) that share the same underlying buffer</returns>
 public Slice[] ConcatKeys(IEnumerable <Slice> keys)
 {
     Contract.NotNull(keys, nameof(keys));
     //REVIEW: what to do with keys that are Slice.Nil ?
     return(Slice.ConcatRange(GetKeyPrefix(), keys));
 }