protected abstract String getPluginId();
protected abstract String getDefaultImageFilePath();
protected List<? extends ICompletionProposal> lookupCrossReference(CrossReference crossReference, EObject model,
int offset) {
List<ICompletionProposal> completionProposalList = new ArrayList<ICompletionProposal>();
<BUG>if (linkingService != null) {
EObject semanticModel = model instanceof AbstractNode ? NodeUtil.getNearestSemanticObject((AbstractNode) model) : model;
List<Pair<String, URI>> candidates = linkingService.getLinkCandidates(semanticModel, crossReference, "");</BUG>
for (Pair<String, URI> candidate : candidates) {
completionProposalList.add(createCompletionProposal(candidate.getFirstElement(), offset));

protected abstract String getPluginId();
protected abstract String getDefaultImageFilePath();
protected List<? extends ICompletionProposal> lookupCrossReference(CrossReference crossReference, EObject model,
int offset) {
List<ICompletionProposal> completionProposalList = new ArrayList<ICompletionProposal>();
if (linkingService != null && model instanceof AbstractNode) {
EObject semanticModel = NodeUtil.getNearestSemanticObject((AbstractNode) model);
List<Pair<String, URI>> candidates = linkingService.getLinkCandidates(semanticModel, crossReference, "");
for (Pair<String, URI> candidate : candidates) {
completionProposalList.add(createCompletionProposal(candidate.getFirstElement(), offset));
