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); }