@Override
 public JsonObject toJson() {
   JsonObject object = super.toJson();
   JsonElement jsonExportDate =
       exportDate == null ? JsonNull.INSTANCE : new JsonPrimitive(exportDate.getTime());
   object.add("exportDate", jsonExportDate);
   JsonElement jsonParent = parent == null ? JsonNull.INSTANCE : parent.toJson();
   object.add("parent", jsonParent);
   JsonElement jsonName = name == null ? JsonNull.INSTANCE : new JsonPrimitive(name);
   object.add("name", jsonName);
   return object;
 }
 @Override
 public void fromJson(JsonObject jsonObject) {
   super.fromJson(jsonObject);
   if (jsonObject.has("exportDate")) {
     JsonElement jsonExportDate = jsonObject.get("exportDate");
     if (jsonExportDate != null) {
       exportDate = new Date(jsonExportDate.getAsLong());
     }
   }
   if (jsonObject.has("parent")) {
     JsonElement jsonParent = jsonObject.get("parent");
     if (jsonParent != null) {
       parent = new Genre();
       parent.fromJson(jsonParent.getAsJsonObject());
     }
   }
   if (jsonObject.has("name")) {
     JsonElement jsonName = jsonObject.get("name");
     if (jsonName != null) {
       name = jsonName.getAsString();
     }
   }
 }