/// <summary>
 /// Method to create an object from a set of object attributes.
 /// </summary>
 /// <param name="obj_attributes">The object attributes to create/open from.</param>
 /// <returns>The newly created object.</returns>
 protected override object CreateObject(ObjectAttributes obj_attributes)
 {
     if (PrivateNamespaceDescriptor != null)
     {
         using (BoundaryDescriptor descriptor = BoundaryDescriptor.CreateFromString(PrivateNamespaceDescriptor))
         {
             return(NtDirectory.CreatePrivateNamespace(obj_attributes, descriptor, Access));
         }
     }
     else
     {
         return(NtDirectory.Create(obj_attributes, Access, ShadowDirectory, Flags));
     }
 }