public override void Process(Configuration config)
        {
            var tables = GetTables(config);

            // create a resource resolver that will scan all plugins
            // TODO: we should only scan plugins that are tied to the specified PersistentStore, but there is currently no way to know this
            IResourceResolver resolver = new ResourceResolver(
                CollectionUtils.Map(Platform.PluginManager.Plugins, (PluginInfo pi) => pi.Assembly).ToArray());

            // find all dbi resources
            var rx       = new Regex("dbi.xml$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
            var dbiFiles = resolver.FindResources(rx);

            foreach (var dbiFile in dbiFiles)
            {
                using (var stream = resolver.OpenResource(dbiFile))
                {
                    var xmlDoc = new XmlDocument();
                    xmlDoc.Load(stream);
                    var indexElements = xmlDoc.SelectNodes("indexes/index");
                    if (indexElements == null)
                    {
                        continue;
                    }

                    foreach (XmlElement indexElement in indexElements)
                    {
                        ProcessIndex(indexElement, tables);
                    }
                }
            }
        }