### Question:
ContributorHelper { public static List<String> parseTrack(String track) { Pattern pattern = Pattern.compile("(.+)(\\((F|f)eat(\\. |\\.| |uring )(.+))\\)"); Matcher matcher = pattern.matcher(track); boolean matches = matcher.matches(); if (matches) { String title = matcher.group(1).trim(); String featuring = matcher.group(5).trim(); return createContributorList(title, featuring); } pattern = Pattern.compile("(.+)(\\((W|w)ith(.+))\\)"); matcher = pattern.matcher(track); matches = matcher.matches(); if (matches) { String title = matcher.group(1).trim(); String featuring = matcher.group(4).trim(); return createContributorList(title, featuring); } return singletonList(track); }  static List<String> parseArtist(String artist); static List<String> parseTrack(String track); static String formatContributors(String artist, List<String> contributors);  }### Answer:
@Test public void testParseTrack() { assertEquals(singletonList("A"), parseTrack("A")); assertEquals(asList("A", "B"), parseTrack("A (feat. B)")); assertEquals(asList("A", "B"), parseTrack("A (Feat. B)")); assertEquals(asList("A", "B"), parseTrack("A (featuring B)")); assertEquals(asList("A", "B"), parseTrack("A (Featuring B)")); assertEquals(asList("A", "B"), parseTrack("A (with B)")); assertEquals(asList("A", "B"), parseTrack("A (With B)")); }