Feed implements Hydratable { @Override @WorkerThread public void hydrate() { if (hasAnimeLibraryEntries()) { for (final AnimeLibraryEntry ale : mAnimeLibraryEntries) { ale.hydrate(this); } } if (hasAnimeReviews()) { final Iterator<AnimeReview> iterator = mAnimeReviews.iterator(); do { final AnimeReview animeReview = iterator.next(); if (!animeReview.hydrate(this)) { iterator.remove(); } } while (iterator.hasNext()); } if (hasGroupMembers()) { for (final GroupMember groupMember : mGroupMembers) { groupMember.hydrate(this); } } if (hasGroups()) { for (final Group group : mGroups) { group.hydrate(); } } if (hasMangaLibraryEntries()) { for (final MangaLibraryEntry mle : mMangaLibraryEntries) { mle.hydrate(this); } } if (hasNotifications()) { for (final AbsNotification notification : mNotifications) { notification.hydrate(this); } } if (hasSubstories()) { for (final AbsSubstory substory : mSubstories) { substory.hydrate(this); } } if (hasStories()) { for (final AbsStory story : mStories) { story.hydrate(this); } } if (hasStory()) { mStory.hydrate(this); } if (hasUsers()) { for (final User user : mUsers) { user.hydrate(); } } }  void addAnime(@Nullable final ArrayList<Anime> anime); @Nullable ArrayList<Anime> getAnime(); @Nullable ArrayList<String> getAnimeIdsNeededForAnimeReviews(); @Nullable ArrayList<AnimeLibraryEntry> getAnimeLibraryEntries(); int getAnimeLibraryEntriesSize(); @Nullable ArrayList<AnimeReview> getAnimeReviews(); int getAnimeReviewsSize(); int getCursor(); @Nullable ArrayList<GroupMember> getGroupMembers(); int getGroupMembersSize(); @Nullable ArrayList<Group> getGroups(); int getGroupsSize(); @Nullable ArrayList<Manga> getManga(); @Nullable ArrayList<MangaLibraryEntry> getMangaLibraryEntries(); int getMangaLibraryEntriesSize(); @Nullable ArrayList<AbsNotification> getNotifications(); int getNotificationsSize(); @Nullable ArrayList<AbsStory> getStories(); int getStoriesSize(); @Nullable AbsStory getStory(); @Nullable ArrayList<AbsSubstory> getSubstories(); @Nullable ArrayList<AbsSubstory> getSubstories(final AbsSubstory.Type type); int getSubstoriesSize(); @Nullable ArrayList<User> getUsers(); int getUsersSize(); boolean hasAnime(); boolean hasAnimeLibraryEntries(); boolean hasAnimeReviews(); boolean hasCursor(); boolean hasGroupMembers(); boolean hasGroups(); boolean hasManga(); boolean hasMangaLibraryEntries(); boolean hasNotifications(); boolean hasStories(); boolean hasStory(); boolean hasSubstories(); boolean hasUsers(); @Override @WorkerThread void hydrate(); void merge(@Nullable final Feed feed);  }
@Test public void testHydrate() throws Exception { final ArrayList<AbsSubstory> substories = mFeed.getSubstories(); for (final AbsSubstory substory : substories) { final ReplySubstory reply = (ReplySubstory) substory; assertNotNull(reply.getUser()); } }