T411V2Provider extends DownloadFinder implements EpisodeFinder, MusicAlbumFinder, TVShowSeasonProvider, MovieProvider, BookFinder, MagazineProvider { @Override public List<SearchResult> findMusicAlbum(String artist, String album, MusicQuality quality) throws MusicAlbumSearchException { String search = String.format("%s %s", artist, album); int subcategory = quality == MusicQuality.LOSSLESS ? 401 : 402; try { return extract(search, 4, subcategory); } catch (IOException e) { throw new MusicAlbumSearchException( e ); } }  String getBaseURL(); void setBaseURL(String baseURL); String getUsername(); void setUsername(String username); String getPassword(); void setPassword(String password); @Override boolean needsLanguageInSearchString(); @Override void configureProvider(); @Override List<SearchResult> findDownloadsForMagazine(String issueSearchString); @Override List<SearchResult> findMovie(String name, int year, VideoQuality videoQuality, Language audioLanguage,
			Language subtitlesLanguage); @Override List<SearchResult> findDownloadsForSeason(String aka, Language audioLanguage, int seasonNumber); @Override List<SearchResult> findMusicAlbum(String artist, String album, MusicQuality quality); @Override List<SearchResult> findEpisode(String seriesName, Language audioLanguage, int seasonNumber,
			int episodeNumber); @Override List<SearchResult> findEpisode(String seriesName, Language audioLanguage, int absoluteEpisodeNumber); @Override List<SearchResult> findBook(Book book);  }
@Test public void testFindMusicAlbum() throws MusicAlbumSearchException { List<SearchResult> results = provider.findMusicAlbum("The Offspring", "Ignition", MusicQuality.COMPRESSED); for (SearchResult searchResult : results) { System.out.println(searchResult.getTitle()); } }