@Override
      public void childMoved(@NotNull final PsiTreeChangeEvent event) {
        final PsiElement child = event.getChild();
        if (!(child instanceof PsiFile)) {
          if (child instanceof PsiDirectory) {
            if (event.getOldParent() instanceof PsiDirectory && event.getNewParent() instanceof PsiDirectory) {
              final String fromDirUrl = ((PsiDirectory)event.getOldParent()).getVirtualFile().getUrl() + "/";
              final NotNullLazyValue<String> toDirUrl = NotNullLazyValue.lazy(() -> {
                return ((PsiDirectory)event.getNewParent()).getVirtualFile().getUrl() + "/";
              });
              for (String dissociatedFileUrl : new SmartList<>(myState.getDissociatedFiles())) {
                if (dissociatedFileUrl.startsWith(fromDirUrl)) {
                  myState.getDissociatedFiles().remove(dissociatedFileUrl);
                  myState.getDissociatedFiles().add(toDirUrl.getValue() + dissociatedFileUrl.substring(fromDirUrl.length()));
                }
              }
              for (CustomResourceBundleState customResourceBundleState : myState.getCustomResourceBundles()) {
                for (String fileUrl : new SmartList<>(customResourceBundleState.getFileUrls())) {
                  if (fileUrl.startsWith(fromDirUrl)) {
                    customResourceBundleState.getFileUrls().remove(fileUrl);
                    customResourceBundleState.getFileUrls().add(toDirUrl.getValue() + fileUrl.substring(fromDirUrl.length()));
                  }
                }
              }
            }
          }
          return;
        }
        final PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile((PsiFile)child);
        if (propertiesFile == null) {
          return;
        }
        final String oldParentUrl = getUrl(event.getOldParent());
        if (oldParentUrl == null) {
          return;
        }
        final String newParentUrl = getUrl(event.getNewParent());
        if (newParentUrl == null) {
          return;
        }

        final NotNullLazyValue<Pair<String, String>> oldAndNewUrls = NotNullLazyValue.lazy(() -> {
          final String newUrl = propertiesFile.getVirtualFile().getUrl();
          return new Pair<>(oldParentUrl + newUrl.substring(newParentUrl.length()), newUrl);
        });

        if (!myState.getDissociatedFiles().isEmpty()) {
          if (myState.getDissociatedFiles().remove(oldAndNewUrls.getValue().getFirst())) {
            myState.getDissociatedFiles().add(oldAndNewUrls.getValue().getSecond());
          }
        }

        for (CustomResourceBundleState customResourceBundleState : myState.getCustomResourceBundles()) {
          if (customResourceBundleState.getFileUrls().remove(oldAndNewUrls.getValue().getFirst())) {
            customResourceBundleState.getFileUrls().add(oldAndNewUrls.getValue().getSecond());
            break;
          }
        }

      }
@Override
      public void childMoved(@NotNull final PsiTreeChangeEvent event)