public static IEnumerable <Extension> GetRequiredExtensions(this IExtensionReader reader, int extensionId)
        {
            var info = reader.GetExtensionByID(extensionId);

            if (info == null)
            {
                yield break;
            }

            foreach (var requiredExtension in info.RequiredExtensions)
            {
                yield return(requiredExtension);

                foreach (var extension in reader.GetRequiredExtensions(requiredExtension.id))
                {
                    yield return(extension);
                }
            }
        }
 private Dictionary <Extension, Extension[]> GetEnablerAndRequiredExtensions(int definition)
 {
     return(_extensionReader.GetEnablerExtensions(definition).ToDictionary(e => e, e => _extensionReader.GetRequiredExtensions(e.id).ToArray()));
 }