void (ChangeEvent e) { final TreeTableTree tree = getTree(); String newTypeValue = ((MyPropertyTypeCellEditor)e.getSource()).getCellEditorValue(); if (tree == null) { myTreeTable.editingStopped(e); return; } try { final PsiType type = JavaPsiFacade.getElementFactory(myProject).createTypeFromText(newTypeValue, null); newTypeValue = type.getCanonicalText(); } catch (IncorrectOperationException ex) { //do nothing in case bad string is entered } final TreePath editingTypePath = tree.getSelectionPath(); if (editingTypePath == null) return; final TreePath editingClassPath = editingTypePath.getParentPath(); Object oldTypeValue = myTreeTable.getValueAt(tree.getRowForPath(editingTypePath), TYPE_COLUMN); if (!(oldTypeValue instanceof String)) { myTreeTable.editingStopped(e); return; } final Object editingPropertyObject = myTreeTable.getValueAt(tree.getRowForPath(editingTypePath), CLASS_OR_ELEMENT_NAME_COLUMN); final Object editingClassObject = myTreeTable.getValueAt(tree.getRowForPath(editingClassPath), CLASS_OR_ELEMENT_NAME_COLUMN); if (!(editingPropertyObject instanceof DItemElement dynamicElement) || !(editingClassObject instanceof DClassElement)) { myTreeTable.editingStopped(e); return; } final String name = dynamicElement.getName(); final String className = ((DClassElement)editingClassObject).getName(); if (dynamicElement instanceof DPropertyElement) { DynamicManager.getInstance(myProject).replaceDynamicPropertyType(className, name, (String)oldTypeValue, newTypeValue); } else if (dynamicElement instanceof DMethodElement) { final List<ParamInfo> myPairList = ((DMethodElement)dynamicElement).getPairs(); DynamicManager.getInstance(myProject).replaceDynamicMethodType(className, name, myPairList, (String)oldTypeValue, newTypeValue); } }