public static bool ShouldDefine(this IDoubleApi api, string[] array)
 {
     foreach (var element0 in array)
     {
         foreach (var element1 in array)
         {
             if (!api.TryGetEnabled(element0, element1, out var apiEnabled) || !apiEnabled)
             {
                 continue;
             }
             return(true);
         }
     }
     return(false);
 }
        public static void HelpWithGenerate(this IDoubleApi Api, IEnumerableCollectionProcessor processor, ModuleDefinition mainModule, ModuleDefinition systemModule, Action <string, bool, string, bool, TypeDefinition, ModuleDefinition, ModuleDefinition> GenerateEachPair)
        {
            if (!processor.TryGetEnabled(Api.Name, out var enabled) || !enabled)
            {
                return;
            }
            var array = processor.EnabledNameCollection.Intersect(Api.NameCollection).ToArray();

            if (!Api.ShouldDefine(array))
            {
                return;
            }
            TypeDefinition @static;

            mainModule.Types.Add(@static = mainModule.DefineStatic(Api.Name + Api.Description + "Helper"));
            var count = Api.Count;

            for (var row = 0; row < count; row++)
            {
                var rowName = Api.NameCollection[row];
                if (!processor.IsSpecialType(rowName, out var isRowSpecial))
                {
                    throw new KeyNotFoundException();
                }

                for (var column = 0; column < count; column++)
                {
                    var columnName = Api.NameCollection[column];
                    if (!processor.IsSpecialType(columnName, out var isColumnSpecial))
                    {
                        throw new KeyNotFoundException();
                    }

                    if (!Api.TryGetEnabled(rowName, columnName, out var apiEnabled) || !apiEnabled)
                    {
                        continue;
                    }

                    GenerateEachPair(rowName, isRowSpecial, columnName, isColumnSpecial, @static, mainModule, systemModule);
                }
            }
        }