Iterable<Content> explode() sync* { if (this is ContentGroup) { for (final content in (this as ContentGroup).contents) { yield* content.explode(); } } else { yield this; } }