void (TreeElement element) { PsiElement mirrorElement = SourceTreeToPsiMap.treeToPsiNotNull(element); if (!(mirrorElement instanceof PsiJavaFile)) { throw new InvalidMirrorException("Unexpected mirror file: " + mirrorElement); } PsiJavaFile mirrorFile = (PsiJavaFile)mirrorElement; PsiJavaModule module = getModuleDeclaration(); if (module != null) { ClsElementImpl.setMirror(module, mirrorFile.getModuleDeclaration()); } else { PsiClass[] classes = getClasses(), mirrors = mirrorFile.getClasses(); PsiPackageStatement pkg = getPackageStatement(), mirrorPkg = mirrorFile.getPackageStatement(); if (classes.length == 1 && mirrors.length == 0 && PsiPackage.PACKAGE_INFO_CLASS.equals(classes[0].getName())) { ClsElementImpl.setMirror(pkg, mirrorPkg); ClsElementImpl.setMirrorIfPresent(classes[0].getModifierList(), mirrorPkg.getAnnotationList()); } else if (pkg == null || !CORRUPTED_CLASS_PACKAGE.equals(pkg.getPackageName())) { ClsElementImpl.setMirrorIfPresent(pkg, mirrorPkg); ClsElementImpl.setMirrors(classes, mirrors); } } }