/// <summary>
        /// Adds a shared Variable to the context that is checked by the GenericPluginHandlerBase to determine if it should be skipped  * NOTE * The Plugin has to finish executing for the Shared Variable to be passed to a new plugin
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="handlerTypeFullName">The Full Type Name of the Plugin to Prevent</param>
        /// <param name="event">Type of the event.</param>
        /// <exception cref="System.ArgumentNullException"></exception>
        public static void PreventPluginHandlerExecution(this IPluginExecutionContext context, string handlerTypeFullName, RegisteredEvent @event)
        {
            if (@event == null)
            {
                throw new ArgumentNullException(nameof(@event));
            }

            context.PreventPluginHandlerExecution(handlerTypeFullName, @event.MessageName, @event.EntityLogicalName, @event.Stage);
        }
 /// <summary>
 /// Adds a shared Variable to the context that is checked by the GenericPluginHandlerBase to determine if it should be skipped  * NOTE * The Plugin has to finish executing for the Shared Variable to be passed to a new plugin
 /// </summary>
 /// <typeparam name="T">The type of the plugin.</typeparam>
 public static void PreventPluginHandlerExecution <T>(this IPluginExecutionContext context, string messageName = null, string logicalName = null, PipelineStage?stage = null)
     where T : IRegisteredEventsPluginHandler
 {
     context.PreventPluginHandlerExecution(typeof(T).FullName, messageName, logicalName, stage);
 }
 /// <summary>
 /// Adds a shared Variable to the context that is checked by the GenericPluginHandlerBase to determine if it should be skipped  * NOTE * The Plugin has to finish executing for the Shared Variable to be passed to a new plugin
 /// </summary>
 /// <typeparam name="T">The type of the plugin.</typeparam>
 /// <param name="context">The context.</param>
 /// <param name="event">Type of the event.</param>
 public static void PreventPluginHandlerExecution <T>(this IPluginExecutionContext context, RegisteredEvent @event)
     where T : IRegisteredEventsPluginHandler
 {
     context.PreventPluginHandlerExecution(typeof(T).FullName, @event);
 }
 /// <summary>
 /// Adds a shared Variable to the context that is checked by the GenericPluginHandlerBase to determine if it should be skipped  * NOTE * The Plugin has to finish executing for the Shared Variable to be passed to a new plugin
 /// </summary>
 /// <typeparam name="T">The type of the plugin.</typeparam>
 /// <param name="context">The context.</param>
 /// <param name="messageType">Type of the message.</param>
 public static void PreventPluginHandlerExecution <T>(this IPluginExecutionContext context, MessageType messageType)
     where T : IRegisteredEventsPluginHandler
 {
     context.PreventPluginHandlerExecution <T>(messageType.Name);
 }
 /// <summary>
 /// Adds a shared Variable to the context that is checked by the GenericPluginHandlerBase to determine if it should be skipped  * NOTE * The Plugin has to finish executing for the Shared Variable to be passed to a new plugin
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="handlerTypeFullName">The Full Type Name of the Plugin to Prevent</param>
 /// <param name="messageType">Type of the message.</param>
 public static void PreventPluginHandlerExecution(this IPluginExecutionContext context, string handlerTypeFullName, MessageType messageType)
 {
     context.PreventPluginHandlerExecution(handlerTypeFullName, messageType.Name);
 }