{"action":"created","issue":{"url":"https://api.github.com/repos/edvin/tornadofx-idea-plugin/issues/34","repository_url":"https://api.github.com/repos/edvin/tornadofx-idea-plugin","labels_url":"https://api.github.com/repos/edvin/tornadofx-idea-plugin/issues/34/labels{/name}","comments_url":"https://api.github.com/repos/edvin/tornadofx-idea-plugin/issues/34/comments","events_url":"https://api.github.com/repos/edvin/tornadofx-idea-plugin/issues/34/events","html_url":"https://github.com/edvin/tornadofx-idea-plugin/issues/34","id":247998613,"number":34,"title":"IntelliJ IDEA freezes on copying a file","user":{"login":"CrazyCoder","id":122834,"avatar_url":"https://avatars3.githubusercontent.com/u/122834?v=4","gravatar_id":"","url":"https://api.github.com/users/CrazyCoder","html_url":"https://github.com/CrazyCoder","followers_url":"https://api.github.com/users/CrazyCoder/followers","following_url":"https://api.github.com/users/CrazyCoder/following{/other_user}","gists_url":"https://api.github.com/users/CrazyCoder/gists{/gist_id}","starred_url":"https://api.github.com/users/CrazyCoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CrazyCoder/subscriptions","organizations_url":"https://api.github.com/users/CrazyCoder/orgs","repos_url":"https://api.github.com/users/CrazyCoder/repos","events_url":"https://api.github.com/users/CrazyCoder/events{/privacy}","received_events_url":"https://api.github.com/users/CrazyCoder/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2017-08-04T12:58:53Z","updated_at":"2017-08-04T15:04:07Z","closed_at":null,"body":"Originally reported here: https://youtrack.jetbrains.com/issue/KT-19448.\r\n\r\nThread dumps indicate that TornadoFX plug-in might be the case:\r\n\r\n```\r\n\"AWT-EventQueue-0\" prio=0 tid=0x0 nid=0x0 runnable\r\n     java.lang.Thread.State: RUNNABLE\r\n\r\n\tat com.intellij.openapi.roots.impl.DirectoryIndexImpl.dispatchPendingEvents(DirectoryIndexImpl.java:98)\r\n\tat com.intellij.openapi.roots.impl.DirectoryIndexImpl.getInfoForFile(DirectoryIndexImpl.java:142)\r\n\tat com.intellij.openapi.roots.impl.FileIndexBase.getInfoForFileOrDirectory(FileIndexBase.java:57)\r\n\tat com.intellij.openapi.roots.impl.ModuleFileIndexImpl.isInSourceContent(ModuleFileIndexImpl.java:85)\r\n\tat org.jetbrains.kotlin.idea.util.ProjectRootsUtilKt.isInSourceContentWithoutInjected(ProjectRootsUtil.kt:40)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.ModuleProductionSourceScope.contains(IdeaModuleInfos.kt:160)\r\n\tat org.jetbrains.kotlin.load.java.JavaClassFinderImpl$FilterOutKotlinSourceFilesScope.contains(JavaClassFinderImpl.java:67)\r\n\tat com.intellij.psi.NonClasspathClassFinder.a(NonClasspathClassFinder.java:178)\r\n\tat com.intellij.psi.NonClasspathClassFinder$$Lambda$1113/1536191273.process(Unknown Source)\r\n\tat com.intellij.util.containers.ContainerUtil.process(ContainerUtil.java:837)\r\n\tat com.intellij.psi.NonClasspathClassFinder.a(NonClasspathClassFinder.java:177)\r\n\tat com.intellij.psi.NonClasspathClassFinder.findClass(NonClasspathClassFinder.java:101)\r\n\tat org.jetbrains.kotlin.idea.core.script.KotlinScriptDependenciesClassFinder.findClass(KotlinScriptDependenciesClassFinder.kt:61)\r\n\tat org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade$KotlinPsiElementFinderWrapperImpl.findClass(KotlinJavaPsiFacade.java:333)\r\n\tat org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade.findClass(KotlinJavaPsiFacade.java:120)\r\n\tat org.jetbrains.kotlin.load.java.JavaClassFinderImpl.findClass(JavaClassFinderImpl.java:98)\r\n\tat org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageScope$classes$1.invoke(LazyJavaPackageScope.kt:73)\r\n\tat org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageScope$classes$1.invoke(LazyJavaPackageScope.kt:41)\r\n\tat org.jetbrains.kotlin.storage.LockBasedStorageManager$MapBasedMemoizedFunction.invoke(LockBasedStorageManager.java:402)\r\n\tat org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageScope.findClassifier(LazyJavaPackageScope.kt:134)\r\n\tat org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageScope.getContributedClassifier(LazyJavaPackageScope.kt:124)\r\n\tat org.jetbrains.kotlin.load.java.lazy.descriptors.JvmPackageScope.getContributedClassifier(JvmPackageScope.kt:51)\r\n\tat org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope.getContributedClassifier(ChainedMemberScope.kt:33)\r\n\tat org.jetbrains.kotlin.resolve.scopes.AbstractScopeAdapter.getContributedClassifier(AbstractScopeAdapter.kt:44)\r\n\tat org.jetbrains.kotlin.resolve.AllUnderImportScope$getContributedClassifier$1.invoke(AllUnderImportScope.kt:68)\r\n\tat org.jetbrains.kotlin.resolve.AllUnderImportScope$getContributedClassifier$1.invoke(AllUnderImportScope.kt:28)\r\n\tat kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:147)\r\n\tat kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:108)\r\n\tat kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:131)\r\n\tat kotlin.sequences.SequencesKt___SequencesKt.singleOrNull(_Sequences.kt:302)\r\n\tat org.jetbrains.kotlin.resolve.AllUnderImportScope.getContributedClassifier(AllUnderImportScope.kt:68)\r\n\tat org.jetbrains.kotlin.resolve.lazy.LazyImportScope$getContributedClassifier$1.invoke(LazyImportScope.kt:217)\r\n\tat org.jetbrains.kotlin.resolve.lazy.LazyImportScope$getContributedClassifier$1.invoke(LazyImportScope.kt:191)\r\n\tat org.jetbrains.kotlin.resolve.lazy.LazyImportResolver$selectSingleFromImports$1.invoke(LazyImportScope.kt:162)\r\n\tat org.jetbrains.kotlin.resolve.lazy.LazyImportResolver$selectSingleFromImports$2.invoke(LazyImportScope.kt:168)\r\n\tat org.jetbrains.kotlin.resolve.lazy.LazyImportResolver$selectSingleFromImports$2.invoke(LazyImportScope.kt:75)\r\n\tat org.jetbrains.kotlin.storage.LockBasedStorageManager.compute(LockBasedStorageManager.java:211)\r\n\tat org.jetbrains.kotlin.resolve.lazy.LazyImportResolver.selectSingleFromImports(LazyImportScope.kt:168)\r\n\tat org.jetbrains.kotlin.resolve.lazy.LazyImportScope.getContributedClassifier(LazyImportScope.kt:216)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.TowerLevelsKt.getContributedFunctionsAndConstructors(TowerLevels.kt:271)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.TowerLevelsKt.access$getContributedFunctionsAndConstructors(TowerLevels.kt:1)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.ScopeBasedTowerLevel.getFunctions(TowerLevels.kt:188)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.ScopeTowerProcessorsKt$createSimpleFunctionProcessor$1.invoke(ScopeTowerProcessors.kt:194)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.ScopeTowerProcessorsKt$createSimpleFunctionProcessor$1.invoke(ScopeTowerProcessors.kt)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.NoExplicitReceiverScopeTowerProcessor.simpleProcess(ScopeTowerProcessors.kt:111)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.AbstractSimpleScopeTowerProcessor.process(ScopeTowerProcessors.kt:48)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.CompositeScopeTowerProcessor.process(ScopeTowerProcessors.kt:39)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.TowerResolver.processTowerData(TowerResolver.kt:189)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.TowerResolver.access$processTowerData(TowerResolver.kt:71)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.TowerResolver$run$1.invoke(TowerResolver.kt:106)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.TowerResolver.run(TowerResolver.kt:161)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.TowerResolver.runResolve(TowerResolver.kt:76)\r\n\tat org.jetbrains.kotlin.resolve.calls.tower.NewResolutionOldInference.runResolution(NewResolutionOldInference.kt:174)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallResolver.doResolveCall(CallResolver.java:624)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallResolver.doResolveCallOrGetCachedResults(CallResolver.java:534)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallResolver.access$100(CallResolver.java:66)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallResolver$1.invoke(CallResolver.java:190)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallResolver$1.invoke(CallResolver.java:184)\r\n\tat org.jetbrains.kotlin.util.PerformanceCounter.time(PerformanceCounter.kt:90)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallResolver.computeTasksAndResolveCall(CallResolver.java:184)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallResolver.computeTasksAndResolveCall(CallResolver.java:174)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallResolver.resolveFunctionCall(CallResolver.java:285)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallExpressionResolver.getResolvedCallForFunction(CallExpressionResolver.kt:91)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallExpressionResolver.getCallExpressionTypeInfoWithoutFinalTypeCheck(CallExpressionResolver.kt:197)\r\n\tat org.jetbrains.kotlin.resolve.calls.CallExpressionResolver.getCallExpressionTypeInfo(CallExpressionResolver.kt:176)\r\n\tat org.jetbrains.kotlin.types.expressions.BasicExpressionTypingVisitor.visitCallExpression(BasicExpressionTypingVisitor.java:783)\r\n\tat org.jetbrains.kotlin.types.expressions.ExpressionTypingVisitorDispatcher.visitCallExpression(ExpressionTypingVisitorDispatcher.java:392)\r\n\tat org.jetbrains.kotlin.types.expressions.ExpressionTypingVisitorDispatcher$ForDeclarations.visitCallExpression(ExpressionTypingVisitorDispatcher.java:55)\r\n\tat org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)\r\n\tat org.jetbrains.kotlin.types.expressions.ExpressionTypingVisitorDispatcher$1.invoke(ExpressionTypingVisitorDispatcher.java:185)\r\n\tat org.jetbrains.kotlin.types.expressions.ExpressionTypingVisitorDispatcher$1.invoke(ExpressionTypingVisitorDispatcher.java:172)\r\n\tat org.jetbrains.kotlin.util.PerformanceCounter.time(PerformanceCounter.kt:90)\r\n\tat org.jetbrains.kotlin.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:172)\r\n\tat org.jetbrains.kotlin.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:143)\r\n\tat org.jetbrains.kotlin.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:155)\r\n\tat org.jetbrains.kotlin.types.expressions.ExpressionTypingServices.getBodyExpressionType(ExpressionTypingServices.java:228)\r\n\tat org.jetbrains.kotlin.resolve.DescriptorResolver$6.invoke(DescriptorResolver.java:1104)\r\n\tat org.jetbrains.kotlin.resolve.DescriptorResolver$6.invoke(DescriptorResolver.java:1100)\r\n\tat org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedLazyValue.invoke(LockBasedStorageManager.java:323)\r\n\tat org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedNotNullLazyValue.invoke(LockBasedStorageManager.java:364)\r\n\tat org.jetbrains.kotlin.types.DeferredType.getDelegate(DeferredType.java:92)\r\n\tat org.jetbrains.kotlin.types.WrappedType.getAnnotations(KotlinType.kt:74)\r\n\tat org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.forceResolveAllContents(ForceResolveUtil.java:105)\r\n\tat org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.doForceResolveAllContents(ForceResolveUtil.java:92)\r\n\tat org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.forceResolveAllContents(ForceResolveUtil.java:41)\r\n\tat org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.forceResolveAllContents(ForceResolveUtil.java:51)\r\n\tat org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.forceResolveAllContents(ForceResolveUtil.java:46)\r\n\tat org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor.doForceResolveAllContents(LazyClassDescriptor.java:591)\r\n\tat org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor.access$300(LazyClassDescriptor.java:75)\r\n\tat org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor$8.invoke(LazyClassDescriptor.java:250)\r\n\tat org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor$8.invoke(LazyClassDescriptor.java:247)\r\n\tat org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedLazyValue.invoke(LockBasedStorageManager.java:323)\r\n\tat org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor.forceResolveAllContents(LazyClassDescriptor.java:579)\r\n\tat org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.doForceResolveAllContents(ForceResolveUtil.java:75)\r\n\tat org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.forceResolveAllContents(ForceResolveUtil.java:41)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.lightClasses.IDELightClassContexts.contextForNonLocalClassOrObject(IDELightClassContexts.kt:101)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.IDELightClassGenerationSupport$createDataHolderForClass$2.invoke(IDELightClassGenerationSupport.kt:75)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.IDELightClassGenerationSupport$createDataHolderForClass$2.invoke(IDELightClassGenerationSupport.kt:60)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.lightClasses.LazyLightClassDataHolder$exactResultLazyValue$1.invoke(LazyLightClassDataHolder.kt:50)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.lightClasses.LazyLightClassDataHolder$exactResultLazyValue$1.invoke(LazyLightClassDataHolder.kt:44)\r\n\tat kotlin.SafePublicationLazyImpl.getValue(Lazy.kt:188)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.lightClasses.LazyLightClassDataHolder.getExactResult(LazyLightClassDataHolder.kt)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.lightClasses.LazyLightClassDataHolder.access$getExactResult$p(LazyLightClassDataHolder.kt:44)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.lightClasses.LazyLightClassDataHolder$LazyLightClassData$clsDelegate$2.invoke(LazyLightClassDataHolder.kt:87)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.lightClasses.LazyLightClassDataHolder$LazyLightClassData$clsDelegate$2.invoke(LazyLightClassDataHolder.kt:83)\r\n\tat kotlin.SafePublicationLazyImpl.getValue(Lazy.kt:188)\r\n\tat org.jetbrains.kotlin.idea.caches.resolve.lightClasses.LazyLightClassDataHolder$LazyLightClassData.getClsDelegate(LazyLightClassDataHolder.kt)\r\n\tat org.jetbrains.kotlin.asJava.classes.KtLazyLightClass$clsDelegate$2.invoke(KtLazyLightClass.kt:26)\r\n\tat org.jetbrains.kotlin.asJava.classes.KtLazyLightClass$clsDelegate$2.invoke(KtLazyLightClass.kt:23)\r\n\tat kotlin.SafePublicationLazyImpl.getValue(Lazy.kt:188)\r\n\tat org.jetbrains.kotlin.asJava.classes.KtLazyLightClass.getClsDelegate(KtLazyLightClass.kt)\r\n\tat org.jetbrains.kotlin.asJava.classes.KtLazyLightClass.getClsDelegate(KtLazyLightClass.kt:23)\r\n\tat org.jetbrains.kotlin.asJava.classes.KtLightClassBase.getDelegate(KtLightClassBase.kt:34)\r\n\tat com.intellij.psi.impl.light.AbstractLightClass.getSupers(AbstractLightClass.java:166)\r\n\tat no.tornado.tornadofx.idea.FXTools$Companion.isTornadoFXType(FXTools.kt:36)\r\n\tat no.tornado.tornadofx.idea.framework.TornadoFXFrameworkDetector.detect(TornadoFXFrameworkDetector.kt:36)\r\n\tat com.intellij.framework.detection.impl.FrameworkDetectionManager.a(FrameworkDetectionManager.java:228)\r\n\tat com.intellij.framework.detection.impl.FrameworkDetectionManager.a(FrameworkDetectionManager.java:175)\r\n\tat com.intellij.framework.detection.impl.FrameworkDetectionManager.access$000(FrameworkDetectionManager.java:59)\r\n\tat com.intellij.framework.detection.impl.FrameworkDetectionManager$1.run(FrameworkDetectionManager.java:66)\r\n\tat com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)\r\n\tat com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)\r\n\tat com.intellij.util.ui.update.MergingUpdateQueue.lambda$flush$1(MergingUpdateQueue.java:277)\r\n\tat com.intellij.util.ui.update.MergingUpdateQueue$$Lambda$676/1730171018.run(Unknown Source)\r\n\tat com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2632)\r\n\tat com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:288)\r\n\tat com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:246)\r\n\tat com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:223)\r\n\tat com.intellij.util.Alarm$Request.runSafely(Alarm.java:418)\r\n\tat com.intellij.util.Alarm$Request.access$700(Alarm.java:343)\r\n\tat com.intellij.util.Alarm$Request$1.run(Alarm.java:385)\r\n\tat com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:303)\r\n\tat com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.a(LaterInvocator.java:410)\r\n\tat com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:399)\r\n\tat java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)\r\n\tat java.awt.EventQueue.dispatchEventImpl(EventQueue.java:762)\r\n\tat java.awt.EventQueue.access$500(EventQueue.java:98)\r\n\tat java.awt.EventQueue$3.run(EventQueue.java:715)\r\n\tat java.awt.EventQueue$3.run(EventQueue.java:709)\r\n\tat java.security.AccessController.doPrivileged(Native Method)\r\n\tat java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)\r\n\tat java.awt.EventQueue.dispatchEvent(EventQueue.java:732)\r\n\tat com.intellij.ide.IdeEventQueue.k(IdeEventQueue.java:827)\r\n\tat com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:655)\r\n\tat com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)\r\n\tat java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)\r\n\tat java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)\r\n\tat java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)\r\n\tat java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)\r\n\tat java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)\r\n\tat java.awt.EventDispatchThread.run(EventDispatchThread.java:82)\r\n```"},"comment":{"url":"https://api.github.com/repos/edvin/tornadofx-idea-plugin/issues/comments/320272263","html_url":"https://github.com/edvin/tornadofx-idea-plugin/issues/34#issuecomment-320272263","issue_url":"https://api.github.com/repos/edvin/tornadofx-idea-plugin/issues/34","id":320272263,"user":{"login":"donnerpeter","id":122009,"avatar_url":"https://avatars3.githubusercontent.com/u/122009?v=4","gravatar_id":"","url":"https://api.github.com/users/donnerpeter","html_url":"https://github.com/donnerpeter","followers_url":"https://api.github.com/users/donnerpeter/followers","following_url":"https://api.github.com/users/donnerpeter/following{/other_user}","gists_url":"https://api.github.com/users/donnerpeter/gists{/gist_id}","starred_url":"https://api.github.com/users/donnerpeter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/donnerpeter/subscriptions","organizations_url":"https://api.github.com/users/donnerpeter/orgs","repos_url":"https://api.github.com/users/donnerpeter/repos","events_url":"https://api.github.com/users/donnerpeter/events{/privacy}","received_events_url":"https://api.github.com/users/donnerpeter/received_events","type":"User","site_admin":false},"created_at":"2017-08-04T15:04:07Z","updated_at":"2017-08-04T15:04:07Z","body":"Yes, checking for imports could be faster, but might be incorrect if you allow tornadofx to be a non-direct superclass. But this is most likely fine for framework autodetection purposes."}}
{"actor":{"display_login":"donnerpeter"}}