static string[] initPhase <T>(Type[] types, out string[] availableTypes, out string[] availableNames) where T : ICodeGeneratorInterface { IEnumerable <T> instances = CodeGeneratorUtil.GetOrderedInstances <T>(types); availableTypes = instances .Select(instance => instance.GetType().ToCompilableString()) .ToArray(); availableNames = instances .Select(instance => instance.name) .ToArray(); return(instances .Where(instance => instance.isEnabledByDefault) .Select(instance => instance.GetType().ToCompilableString()) .ToArray()); }