public void Dispose()
 {
     ApplicationMacros.Clear();
     GlobalMacros.Clear();
     AutomationSequences.Clear();
     ((IDisposable)WebClient).Dispose();
 }
        public bool ParseRootDocumentAsync()
        {
            if (RootDocument == null)
            {
                throw new NullReferenceException();
            }
            if (AutomationRunnerSettings == null)
            {
                throw new NullReferenceException();
            }

            Logging.AutomationRunner(LogOptions.MethodName, "Checking root document for to build automation sequences", LogLevel.Info);

            XmlNodeList sequencesXml = XmlUtils.GetXmlNodesFromXPath(RootDocument, "//root.xml/AutomationSequence");

            if (sequencesXml == null || sequencesXml.Count == 0)
            {
                return(false);
            }
            AutomationSequences.Clear();

            foreach (XmlElement result in sequencesXml)
            {
                string sequencePackageName = result.Attributes["packageName"].Value;
                string sequenceUID         = result.Attributes["UID"].Value;
                string sequenceUrlPath     = result.Attributes["path"].Value;
                string sequenceLoadString;

                if (AutomationRunnerSettings.UseLocalRunnerDatabase)
                {
                    sequenceUrlPath    = sequenceUrlPath.Replace('/', Path.DirectorySeparatorChar);
                    sequenceLoadString = Path.Combine(AutomationRepoPathEscaped, sequenceUrlPath);
                }
                else
                {
                    sequenceLoadString = AutomationRepoPathEscaped + sequenceUrlPath;
                }

                AutomationSequences.Add(new AutomationSequence(DatabasePackages, ApplicationMacros, GlobalMacros, AutomationRunnerSettings, DatabaseManager, CancellationToken)
                {
                    AutomationSequencer = this,
                    Package             = null,
                    PackageName         = sequencePackageName,
                    PackageUID          = sequenceUID,
                    SequenceDownloadUrl = sequenceLoadString
                });
            }

            return(true);
        }