TodoItem[] (PsiFile file, final TodoFilter todoFilter) { if (myDirtyFileSet.contains(file.getVirtualFile())) { Set<TodoItem> todoItems = doFindTodoForFile(file, todoFilter); synchronized (myMap) { myMap.remove(file); for (TodoItem todoItem : todoItems) { myMap.putValue(file, todoItem); } } } synchronized (myMap) { final Collection<TodoItem> todoItems = myMap.get(file); return todoItems.isEmpty() ? EMPTY_ITEMS : todoItems.toArray(new TodoItem[0]); } }