public List<Proposal> getTopProposals(String name, Collection<String> proposals) { Set<Proposal> set = new LinkedHashSet<Proposal>(); if (delimiters == null || delimiters.isEmpty()) return new ArrayList<Proposal>(set); // empty result String cleanedName = AutoCompleteHelper.trimWildcards(name); Pattern namePattern = AutoCompleteHelper.convertToPattern(cleanedName); Proposal topProposal = null; for (String proposal : proposals) { Matcher m = namePattern.matcher(proposal); if (m.find()) { int start = m.end(); if (start == proposal.length()) { topProposal = new Proposal(proposal, false); } else { topProposal = findToken(proposal, start); } if (topProposal != null) { topProposal.addStyle(ProposalStyle.getDefault(m.start(), m.end() - 1)); set.add(topProposal); } } } return new ArrayList<Proposal>(set); }