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);
  }