protected Collection<ICompletionProposal> getFuzzyCompletions( final IDocument doc, final int offset) { final String prefix = fuzzySearchPrefix.getPrefix(doc, offset); if (prefix != null) { Collection<Match<PropertyInfo>> matches = findMatches(prefix); if (matches != null && !matches.isEmpty()) { ArrayList<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>(matches.size()); for (final Match<PropertyInfo> match : matches) { ProposalApplier edits = new LazyProposalApplier() { @Override protected ProposalApplier create() throws Exception { Type type = TypeParser.parse(match.data.getType()); DocumentEdits edits = new DocumentEdits(doc); edits.delete(offset - prefix.length(), offset); edits.insert(offset, match.data.getId() + propertyCompletionPostfix(type)); return edits; } }; proposals.add(completionFactory.property(doc, edits, match, typeUtil)); } return proposals; } } return Collections.emptyList(); }