private string calculateDescription() { ISpan previous = null; return(Spans .Aggregate( new StringBuilder(), (builder, span) => { builder.Append(chooseSeparator(previous, span)); builder.Append(toString(span)); previous = span; return builder; }) .ToString() .Trim()); string toString(ISpan span) => span is TextSpan text?text.Text.Trim() : string.Empty; string chooseSeparator(ISpan first, ISpan second) => first is TextSpan && second is TextSpan ? "" : " "; }