public static Collection<CompletionItem> create( MethodDefinition def, int startOffset, int caretOffset, CompletionContext context) { if (def.isAnonymous()) return Collections.emptyList(); int priorityDecrementor = 0; boolean optionalAt = false; StringBuilder visibleText = new StringBuilder(); if (def.getFileObject().equals(context.getFile())) { priorityDecrementor++; if (def.isClassMember() && def.visible(caretOffset)) { optionalAt = true; } } visibleText.append(def.getText()).append(def.getParamString()); switch (context.getType()) { case DEFAULT: if (optionalAt) visibleText.insert(0, thisPrefix); return Collections.<CompletionItem>singletonList( new MethodCompletionItem( visibleText.toString(), def.getText(), def.getFileObject().getNameExt(), startOffset, caretOffset, priorityDecrementor)); case CLASS_ONLY_ACCESSOR: if (def.isClassMember() && def.getClassName().equals(context.getClassName())) return Collections.<CompletionItem>singletonList( new MethodCompletionItem( visibleText.toString(), def.getText(), def.getFileObject().getNameExt(), startOffset, caretOffset, priorityDecrementor)); break; case NORMAL_ACCESSOR: return Collections.<CompletionItem>singletonList( new MethodCompletionItem( visibleText.toString(), def.getText(), def.getFileObject().getNameExt(), startOffset, caretOffset, priorityDecrementor)); } return Collections.emptyList(); }