sclass DownloadedMedia { S cmd; Map info; File convertedFile; *(S *cmd, S json, S convertedExtension) { info = jsonDecodeMap(json); convertedFile = replaceExtension(get(), convertedExtension); } File mediaFile aka get() { if (convertedFile != null) ret convertedFile; ret newFile((S) info.get("_filename")); } O get(S key) { ret info.get(key); } toString { ret "DownloadedMedia: " + renderFileInfo(mediaFile()); } Map toMap() { ret info; } }