private static string VaryAndShortenToFit(
            this IChunk chunk,
            Predicate <string> variantPredicate,
            Predicate <string> shorteningPredicate)
        {
            //var logger = Console.Instance;

            foreach (var v in chunk.GetThisAndVariants())
            {
                if (variantPredicate != null)
                {
                    var vs = v.ToString();

                    //logger.Message($"VaryAndShortenToFit: check variant '{vs}'");

                    if (!variantPredicate(vs))
                    {
                        continue;
                    }
                }

                foreach (var s in v.GetThisAndShortenings())
                {
                    //logger.Message($"VaryAndShortenToFit: check shortening '{s}'");

                    if (shorteningPredicate == null || shorteningPredicate(s))
                    {
                        return(s);
                    }
                }
            }

            //logger.Message("VaryAndShortenToFit: gave up");

            return(null);
        }