Header encoded as JSON
Map<String, dynamic> toJson() { return { 'rendering_system': renderingSystem, if (windows.isNotEmpty) 'windows': windows.map((e) => e.toJson()).toList(growable: false), }; }