/// <summary>
        /// Removes a stored object
        /// </summary>
        /// <remarks>
        /// The object to be replaced is defined according to the value of <see cref="IIdentifiable.Identifiers" />.
        /// </remarks
        /// <param name="storage">Storage object</param>
        /// <param name="data">Object data</param>
        public static void Remove <TDataModel>(this IRemovableStorage <TDataModel> storage, TDataModel data)
            where TDataModel : IIdentifiable
        {
            Checker.NotNullArgument(storage, nameof(storage));

            storage.Remove(data.Identifiers);
        }
        /// <summary>
        /// Removes a stored object
        /// </summary>
        /// <param name="storage">Storage object</param>
        /// <param name="identifier">Object identifier</param>
        public static void Remove <TDataModel>(this IRemovableStorage <TDataModel> storage, object identifier)
            where TDataModel : IIdentifiable
        {
            Checker.NotNullArgument(storage, nameof(storage));

            storage.Remove(new[] { identifier });
        }