Map<String, dynamic> toJson() => { 'id': id, 'kind': kind.name, 'primary_path': primaryPath, if (companions.isNotEmpty) 'companions': companions.map((c) => c.toJson()).toList(), };