internal static void Populate(DateTime populateDeadline)
        {
            if (VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Global.MultiTenancy.Enabled)
            {
                return;
            }
            Dictionary <string, TargetForestConfiguration> dictionary = new Dictionary <string, TargetForestConfiguration>(StringComparer.InvariantCultureIgnoreCase);

            AvailabilityAddressSpace[] array = TargetForestConfigurationCache.SearchAddressSpaceForEnterprise();
            if (array != null && array.Length > 0)
            {
                ScpSearch localScpSearch = ScpSearch.FindLocal();
                foreach (AvailabilityAddressSpace availabilityAddressSpace in array)
                {
                    TargetForestConfiguration targetForestConfiguration;
                    if (dictionary.TryGetValue(availabilityAddressSpace.ForestName, out targetForestConfiguration))
                    {
                        TargetForestConfigurationCache.ConfigurationTracer.TraceError <string, string, ADObjectId>(0L, "There are two or more AvailabilityAddressSpace objects in AD with same ForestName {0}. Existing is {1}. Ignoring object {2}", availabilityAddressSpace.ForestName, targetForestConfiguration.Id, availabilityAddressSpace.Id);
                        Globals.AvailabilityLogger.LogEvent(InfoWorkerEventLogConstants.Tuple_DuplicateAvailabilityAddressSpace, null, new object[]
                        {
                            Globals.ProcessId,
                            availabilityAddressSpace.ForestName,
                            targetForestConfiguration.Id,
                            availabilityAddressSpace.Id
                        });
                    }
                    else if (availabilityAddressSpace.AccessMethod == AvailabilityAccessMethod.InternalProxy)
                    {
                        TargetForestConfigurationCache.ConfigurationTracer.TraceDebug <string>(0L, "Ignoring AvailabilityAddressSpace with ForestName {0} because it is an internal proxy.", availabilityAddressSpace.ForestName);
                    }
                    else
                    {
                        dictionary.Add(availabilityAddressSpace.ForestName, TargetForestConfigurationCache.ConstructTargetForestConfiguration(availabilityAddressSpace, localScpSearch));
                    }
                    if (DateTime.UtcNow > populateDeadline)
                    {
                        TargetForestConfigurationCache.ConfigurationTracer.TraceError(0L, "Unable to continue populating the target forest cache. Deadline has been exceeded.");
                        break;
                    }
                }
            }
            if (dictionary.Count > 0)
            {
                TargetForestConfigurationCache.ConfigurationTracer.TraceDebug <int>(0L, "Updating to new TargetForestConfiguration cache with {0} entries", dictionary.Count);
                TargetForestConfigurationCache.cache = dictionary;
            }
        }