Refactor to Guava's Precondions.checkState() instead of throwing an IllegalStateException exception.
Add @Nonnull and @Nullable annotations.
Add Category entity.