public void beforePropertyChange(@NotNull PsiTreeChangeEventImpl event) {
   beforeChange(true);
   event.setCode(PsiTreeChangeEventImpl.PsiEventType.BEFORE_PROPERTY_CHANGE);
   if (LOG.isDebugEnabled()) {
     LOG.debug(
         "beforePropertyChange: element = "
             + event.getElement()
             + ", propertyName = "
             + event.getPropertyName()
             + ", oldValue = "
             + event.getOldValue());
   }
   fireEvent(event);
 }
 public void propertyChanged(@NotNull PsiTreeChangeEventImpl event) {
   event.setCode(PsiTreeChangeEventImpl.PsiEventType.PROPERTY_CHANGED);
   if (LOG.isDebugEnabled()) {
     LOG.debug(
         "propertyChanged: element = "
             + event.getElement()
             + ", propertyName = "
             + event.getPropertyName()
             + ", oldValue = "
             + event.getOldValue()
             + ", newValue = "
             + event.getNewValue());
   }
   fireEvent(event);
   afterChange(true);
 }