private static void ExtractTypes(Assembly assembly, ISet<Lazy<ISinkElement>> sinks, ISet<Lazy<IFormatterElement>> formatters)
        {
            if (assembly.IsFrameworkAssembly())
            {
                return;
            }

            foreach (Type type in assembly.GetTypes().Where(t => !t.IsAbstract))
            {
                if (typeof(ISinkElement).IsAssignableFrom(type))
                {
                    sinks.Add(new Lazy<ISinkElement>(() => (ISinkElement)Activator.CreateInstance(type)));
                }
                else if (typeof(IFormatterElement).IsAssignableFrom(type))
                {
                    formatters.Add(new Lazy<IFormatterElement>(() => (IFormatterElement)Activator.CreateInstance(type)));
                }
            }
        }