private void CheckEnumName(Enumeration @enum) { // If we still do not have a valid name, then try to guess one // based on the enum value names. if (!string.IsNullOrWhiteSpace(@enum.Name)) return; var prefix = @enum.Items.Select(item => item.Name) .ToArray().CommonPrefix(); // Try a simple heuristic to make sure we end up with a valid name. if (prefix.Length < 3) { @enum.Name = CheckName(@enum.Name); return; } var prefixBuilder = new StringBuilder(prefix); prefixBuilder.TrimUnderscores(); while (@enum.Namespace.Enums.Any(e => e != @enum && e.Name == prefixBuilder.ToString())) prefixBuilder.Append('_'); @enum.Name = prefixBuilder.ToString(); }