private TodoItem[] findPatternedTodoItems(PsiFile file, final TodoFilter todoFilter) {
      if (isFileDirty(file)) {
        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(TodoItem.EMPTY_ARRAY);
      }
    }
private TodoItem[] findPatternedTodoItems(PsiFile file, final TodoFilter todoFilter)