private static IList <IProcessEnginePlugin> ToList(IProcessEnginePlugin plugin,
                                                           params IProcessEnginePlugin[] additionalPlugins)
        {
            IList <IProcessEnginePlugin> plugins = new List <IProcessEnginePlugin>();

            plugins.Add(plugin);
            if ((additionalPlugins != null) && (additionalPlugins.Length > 0))
            {
                ((List <IProcessEnginePlugin>)plugins).AddRange(additionalPlugins);
            }
            return(plugins);
        }
        //private InOrder inOrder;

        public CompositeProcessEnginePluginTest()
        {
            PluginA = ProcessEnginePlugin("PluginA");
            PluginB = ProcessEnginePlugin("PluginB");
        }
 /// <summary>
 ///     Add one (or more) plugins.
 /// </summary>
 /// <param name="plugin"> first plugin </param>
 /// <param name="additionalPlugins"> additional vararg plugins </param>
 /// <returns> self for fluent usage </returns>
 public virtual CompositeProcessEnginePlugin AddProcessEnginePlugin(IProcessEnginePlugin plugin,
                                                                    params IProcessEnginePlugin[] additionalPlugins)
 {
     return(AddProcessEnginePlugins(ToList(plugin, additionalPlugins)));
 }
 /// <summary>
 ///     New instance with vararg.
 /// </summary>
 /// <param name="plugin"> first plugin </param>
 /// <param name="additionalPlugins"> additional vararg plugins </param>
 public CompositeProcessEnginePlugin(IProcessEnginePlugin plugin, params IProcessEnginePlugin[] additionalPlugins)
     : this()
 {
     AddProcessEnginePlugin(plugin, additionalPlugins);
 }