private void InitializeDirectory(IFdbTransaction trans)
		{
			// Set the version key
			var writer = new SliceWriter(3 * 4);
			writer.WriteFixed32((uint)LayerVersion.Major);
			writer.WriteFixed32((uint)LayerVersion.Minor);
			writer.WriteFixed32((uint)LayerVersion.Build);
			trans.Set(this.RootNode.Pack(VersionKey), writer.ToSlice());
		}
		internal static Slice Pack([NotNull] CompressedWord[] words, int size, int highest)
		{
			Contract.Requires(size >= 0 && size <= words.Length);

			if (size == 0)
			{ // empty bitmap
				return Slice.Empty;
			}

			var writer = new SliceWriter(checked((size + 1) << 2));
			writer.WriteFixed32(CompressedWord.MakeHeader(highest));
			for (int i = 0; i < size; i++)
			{
				writer.WriteFixed32(words[i].RawValue);
			}
			return writer.ToSlice();
		}
		private void InitializeDirectory([NotNull] IFdbTransaction trans)
		{
			Contract.Requires(trans != null);

			// Set the version key
			var writer = new SliceWriter(3 * 4);
			writer.WriteFixed32((uint)LayerVersion.Major);
			writer.WriteFixed32((uint)LayerVersion.Minor);
			writer.WriteFixed32((uint)LayerVersion.Build);
			trans.Set(this.RootNode.Keys.Encode(VersionKey), writer.ToSlice());
		}