public void Delete(IConfigurable instance)
        {
            if (instance == null)
            {
                throw new ArgumentNullException("instance");
            }
            ConfigurableObject configurableObject = instance as ConfigurableObject;

            if (configurableObject == null)
            {
                throw new NotSupportedException("Delete: " + instance.GetType().FullName);
            }
            if (configurableObject.ObjectState == ObjectState.Deleted)
            {
                throw new InvalidOperationException(ServerStrings.ExceptionObjectHasBeenDeleted);
            }
            this.InternalDelete(configurableObject);
            configurableObject.ResetChangeTracking();
            configurableObject.MarkAsDeleted();
        }