Map<String, dynamic> toJson() => { 'descriptor': descriptor, if (coverage.isNotEmpty) 'coverage': coverage.map((c) => c.toJson()).toList(), 'at': at.toIso8601String(), };