XElement IDiagnosable.GetDiagnosticInfo(DiagnosableParameters parameters)
        {
            bool     flag     = parameters.Argument.IndexOf("exceptions", StringComparison.OrdinalIgnoreCase) != -1;
            bool     flag2    = parameters.Argument.IndexOf("callstacks", StringComparison.OrdinalIgnoreCase) != -1;
            bool     flag3    = parameters.Argument.IndexOf("verbose", StringComparison.OrdinalIgnoreCase) != -1;
            bool     flag4    = flag3 || parameters.Argument.IndexOf("basic", StringComparison.OrdinalIgnoreCase) != -1;
            bool     flag5    = parameters.Argument.IndexOf("currentThreads", StringComparison.OrdinalIgnoreCase) != -1;
            bool     flag6    = flag4 || parameters.Argument.IndexOf("config", StringComparison.OrdinalIgnoreCase) != -1;
            bool     flag7    = !flag6 || parameters.Argument.IndexOf("help", StringComparison.OrdinalIgnoreCase) != -1;
            XElement xelement = new XElement(((IDiagnosable)this).GetDiagnosticComponentName());

            if (flag7)
            {
                xelement.Add(new XElement("help", "Supported arguments: config, basic, verbose, exceptions, callstacks, currentThreads, help."));
            }
            if (flag4)
            {
                xelement.Add(new XElement("deliveringThreads", StoreDriverDeliveryDiagnostics.deliveringThreads));
                xelement.Add(DeliveryThrottling.Instance.DeliveryServerDiagnostics);
                xelement.Add(DeliveryThrottling.Instance.DeliveryDatabaseDiagnostics);
                xelement.Add(DeliveryThrottling.Instance.DeliveryRecipientDiagnostics);
            }
            if (flag5 && StoreDriverDeliveryDiagnostics.HangDetector != null)
            {
                xelement.Add(StoreDriverDeliveryDiagnostics.HangDetector.GetDiagnosticInfo());
            }
            if (flag3)
            {
                XElement xelement2 = new XElement("HealthHistory");
                foreach (DatabaseHealthBreadcrumb databaseHealthBreadcrumb in ((IEnumerable <DatabaseHealthBreadcrumb>)StoreDriverDeliveryDiagnostics.healthHistory))
                {
                    xelement2.Add(databaseHealthBreadcrumb.GetDiagnosticInfo());
                }
                xelement.Add(xelement2);
                xelement.Add(MailItemDeliver.GetDiagnosticInfo());
                string content;
                using (StringWriter stringWriter = new StringWriter(new StringBuilder(1024)))
                {
                    MemoryTraceBuilder memoryTraceBuilder = StoreDriverDeliveryDiagnostics.TroubleshootingContext.MemoryTraceBuilder;
                    if (memoryTraceBuilder == null)
                    {
                        stringWriter.Write("No traces were flushed from any thread yet, or in-memory tracing is disabled.");
                    }
                    else
                    {
                        memoryTraceBuilder.Dump(stringWriter, true, true);
                    }
                    content = stringWriter.ToString();
                }
                xelement.Add(new XElement("tracing", content));
            }
            if (flag)
            {
                StoreDriverDeliveryDiagnostics.DumpExceptionStatistics(xelement);
            }
            if (flag2)
            {
                StoreDriverDeliveryDiagnostics.DumpExceptionCallstacks(xelement);
            }
            return(xelement);
        }