@Override
 public NavigationItem deserialize(
     JsonElement element, Type type, JsonDeserializationContext context)
     throws JsonParseException {
   JsonObject jsonObject = element.getAsJsonObject();
   long identifier = BaseItemSerializer.identifierFromObject(jsonObject);
   NavigationItem item = new NavigationItem(identifier);
   BaseItemSerializer.deserializeFromObject(item, jsonObject);
   item.setGamesMustMatchAllTags(
       jsonObject.get(JsonConstants.PROPERTY_MUST_MATCH_ALL_TAGS).getAsBoolean());
   item.setShowEligibleGames(jsonObject.get(JsonConstants.PROPERTY_SHOW_GAMES).getAsBoolean());
   this.deserializeAssignedTags(item, jsonObject);
   return item;
 }
 private void deserializeAssignedTags(NavigationItem item, JsonObject jsonObject) {
   JsonElement tagsElement = jsonObject.get(JsonConstants.PROPERTY_TAGS);
   if (tagsElement == null) return;
   JsonArray tagsArray = tagsElement.getAsJsonArray();
   for (JsonElement jsonElement : tagsArray) {
     long tagIdentifier = jsonElement.getAsLong();
     Tag tag = ArcadoidData.sharedInstance().getTagByIdentifier(tagIdentifier);
     if (tag != null) {
       item.getAssignedTags().add(tag);
     }
   }
 }