private JetDecompiledData build() { myBuilder.append(PsiBundle.message("psi.decompiled.text.header")); myBuilder.append("\n\n"); String packageName = myClsFile.getPackageName(); if (packageName.length() > 0) { myBuilder.append("package ").append(packageName).append("\n\n"); } PsiClass psiClass = myClsFile.getClasses()[0]; if (isKotlinNamespaceClass(psiClass)) { NamespaceDescriptor nd = myJavaDescriptorResolver.resolveNamespace( new FqName(packageName), DescriptorSearchRule.INCLUDE_KOTLIN); if (nd != null) { for (DeclarationDescriptor member : sortDeclarations(nd.getMemberScope().getAllDescriptors())) { if (member instanceof ClassDescriptor || member instanceof NamespaceDescriptor) { continue; } appendDescriptor(member, ""); myBuilder.append("\n"); } } } else { ClassDescriptor cd = myJavaDescriptorResolver.resolveClass(psiClass, DescriptorSearchRule.INCLUDE_KOTLIN); if (cd != null) { appendDescriptor(cd, ""); } } JetFile jetFile = JetDummyClassFileViewProvider.createJetFile( myClsFile.getManager(), myClsFile.getVirtualFile(), myBuilder.toString()); for (Map.Entry<PsiElement, TextRange> clsMemberToRange : myClsMembersToRanges.entrySet()) { PsiElement clsMember = clsMemberToRange.getKey(); assert clsMember instanceof ClsElementImpl; TextRange range = clsMemberToRange.getValue(); JetDeclaration jetDeclaration = PsiTreeUtil.findElementOfClassAtRange( jetFile, range.getStartOffset(), range.getEndOffset(), JetDeclaration.class); assert jetDeclaration != null; myClsElementsToJetElements.put((ClsElementImpl) clsMember, jetDeclaration); } return new JetDecompiledData(jetFile, myClsElementsToJetElements); }