/// <summary>
 /// Initializes a new instance of the <see cref="ActionSuiteProvider"/> class.
 /// </summary>
 public ActionSuiteProvider()
 {
     actionDescriptorSuite = null;
     actionListSuite       = null;
     actionReferenceSuite  = null;
     disposed = false;
 }
        /// <summary>
        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        public void Dispose()
        {
            if (!disposed)
            {
                disposed = true;

                if (actionDescriptorSuite != null)
                {
                    actionDescriptorSuite.Dispose();
                    actionDescriptorSuite = null;
                }
                actionListSuite      = null;
                actionReferenceSuite = null;
            }
        }
        /// <summary>
        /// Creates the action list suite.
        /// </summary>
        /// <param name="zstringSuite">The ASZString suite instance.</param>
        /// <exception cref="ArgumentNullException"><paramref name="zstringSuite"/> is null.</exception>
        /// <exception cref="ObjectDisposedException">The class has been disposed.</exception>
        public void CreateListSuite(IASZStringSuite zstringSuite)
        {
            if (zstringSuite == null)
            {
                throw new ArgumentNullException(nameof(zstringSuite));
            }
            if (disposed)
            {
                throw new ObjectDisposedException("ActionSuiteProvider");
            }

            if (!ListSuiteCreated)
            {
                if (!ReferenceSuiteCreated)
                {
                    CreateReferenceSuite();
                }

                actionListSuite = new ActionListSuite(actionReferenceSuite, zstringSuite);
            }
        }