Код PhpStorm буквально утыкан этими анонимными классами. Почти в каждом втором файле можно найти.
Просто в коде шторма нет нормального DI

там игра немного по другим правилам. Надо пробежаться по файлам? вызываешь метод и прокидываешь туда слушатель. Котлин:
Java:
VfsUtil.processFilesRecursively(templateDir, object: Processor<VirtualFile> {
override fun process(virtualFile: VirtualFile): Boolean {
if(virtualFile.isDirectory) return true
val filename: String = VfsUtil.getRelativePath(virtualFile, templateDir, '/') ?: return true
if(filename.endsWith("tpl.php")) {
completionResultSet.addElement(LookupElementBuilder.create(filename))
}
return true
}
})
Скорее всего, причина в том, что там в разных потоках это все может работать... я правда не оч понимаю как оно так легко переменные-замыкания юзает. Видимо все равно ждем результата и можно не париться насчет thread-safety. Т.е. с этими данными в одно время всегда работает один поток...