internal bool CalculatePolicyDistributionStatus(UnifiedPolicyStorageBase storage, Workload appliedWorkload, IEnumerable <UnifiedPolicySettingStatus> statuses, ref List <PolicyDistributionErrorDetails> distributionErrors, ref DateTime?lastStatusUpdateTime) { bool flag = false; Dictionary <Workload, UnifiedPolicySettingStatus> dictionary = new Dictionary <Workload, UnifiedPolicySettingStatus>(); Guid policyVersion = storage.PolicyVersion; foreach (UnifiedPolicySettingStatus unifiedPolicySettingStatus in statuses) { this.WriteVerbose(Strings.VerboseDumpStatusObject(unifiedPolicySettingStatus.Container, unifiedPolicySettingStatus.SettingType, storage.Guid.ToString(), storage.PolicyVersion.ToString(), ((UnifiedPolicyErrorCode)unifiedPolicySettingStatus.ErrorCode).ToString(), unifiedPolicySettingStatus.ObjectVersion.ToString()), false); if (unifiedPolicySettingStatus.ObjectVersion == policyVersion) { Workload workloadFromString = PolicySettingStatusHelpers.GetWorkloadFromString(unifiedPolicySettingStatus.Container); if (!dictionary.ContainsKey(workloadFromString)) { dictionary.Add(workloadFromString, unifiedPolicySettingStatus); } } } IEnumerable <Workload> enumerable = Enum.GetValues(typeof(Workload)).Cast <Workload>(); foreach (Workload workload in enumerable) { if (workload != Workload.None && appliedWorkload.HasFlag(workload)) { UnifiedPolicySettingStatus unifiedPolicySettingStatus2; dictionary.TryGetValue(workload, out unifiedPolicySettingStatus2); PolicyDistributionErrorDetails policyDistributionErrorDetails = this.CreatePolicyDistributionError(workload, storage, unifiedPolicySettingStatus2); flag = (flag || (unifiedPolicySettingStatus2 == null && policyDistributionErrorDetails == null)); if (policyDistributionErrorDetails != null) { distributionErrors.Add(policyDistributionErrorDetails); } if (unifiedPolicySettingStatus2 != null && (lastStatusUpdateTime == null || lastStatusUpdateTime.Value < unifiedPolicySettingStatus2.WhenProcessedUTC)) { lastStatusUpdateTime = new DateTime?(unifiedPolicySettingStatus2.WhenProcessedUTC); } } } return(flag); }