private Size2 MeasureSubspans(BuildingContext context, SubList <Subspan> subspans) { // todo: cache measurments for a context // todo: consider directions subspans = TrimEnd(subspans); var sizes = subspans.Select(MeasureSubspan).ToArray(); return(new Size2(sizes.Sum(x => x.Width), sizes.Max(x => x.Height))); }