Collection<PsiMethod> (@NotNull ClsClassImpl trait) { PsiFile psiFile = trait.getContainingFile(); if (!(psiFile instanceof PsiJavaFile)) return Collections.emptyList(); VirtualFile traitFile = psiFile.getVirtualFile(); if (traitFile == null) return Collections.emptyList(); VirtualFile helperFile = traitFile.getParent().findChild(trait.getName() + HELPER_SUFFIX); if (helperFile == null) return Collections.emptyList(); ByteArraySequence byteSequence = GrTraitUtil.GROOVY_TRAIT_METHODS_GIST.getFileData(trait.getProject(), helperFile); if (byteSequence == null) return Collections.emptyList(); StubTreeSerializer serializer = new ShareableStubTreeSerializer(); List<PsiMethod> result = new ArrayList<>(); Stub root; try { root = serializer.deserialize(byteSequence.toInputStream()); ((PsiJavaFileStubImpl)root).setPsi((PsiJavaFile)psiFile); } catch (SerializerNotFoundException e) { LOG.warn(e); return result; } for (Object childStub : root.getChildrenStubs().get(0).getChildrenStubs()) { if (childStub instanceof PsiMethodStub) { result.add(((PsiMethodStub)childStub).getPsi()); } } return result; }