public Set<Category> possibleCategories() {
    Set<Category> set = new HashSet<>();

    if (currentCategory != null) {
      set.add(Category.parse(currentCategory));
    }

    if (categories != null) {
      for (CategoryField field : categories) {
        Set<Category> cats =
            Category.advance(Category.parse(field.category), field.season, currentSeason());
        if (set.isEmpty()) set.addAll(cats);
        else set.retainAll(cats);
      }
    }

    set.remove(new Category(Category.CategoryBase.UNDEFINED));
    return set;
  }