internal static ImmutableArray <Words> GetBaseNames(ITypeSymbol type, bool pluralize)
            {
                var baseName = TryRemoveInterfacePrefix(type);

                using var parts = TemporaryArray <TextSpan> .Empty;
                StringBreaker.AddWordParts(baseName, ref parts.AsRef());
                var result = GetInterleavedPatterns(parts, baseName, pluralize);

                return(result);
            }
        public static IdentifierNameParts CreateIdentifierNameParts(ISymbol symbol, ImmutableArray <NamingRule> rules)
        {
            var baseName = RemovePrefixesAndSuffixes(symbol, rules, symbol.Name);

            using var parts = TemporaryArray <TextSpan> .Empty;
            StringBreaker.AddWordParts(baseName, ref parts.AsRef());
            var words = CreateWords(parts, baseName);

            return(new IdentifierNameParts(baseName, words));
        }
            internal static ImmutableArray <Words> GetBaseNames(IAliasSymbol alias)
            {
                var name = alias.Name;

                if (alias.Target.IsType &&
                    ((INamedTypeSymbol)alias.Target).IsInterfaceType() &&
                    CanRemoveInterfacePrefix(name))
                {
                    name = name.Substring(1);
                }

                using var breaks = TemporaryArray <TextSpan> .Empty;
                StringBreaker.AddWordParts(name, ref breaks.AsRef());
                var result = GetInterleavedPatterns(breaks, name, pluralize: false);

                return(result);
            }