public static @Nullable PsiType getWritablePropertyType(@Nullable PsiClass containingClass, @Nullable PsiElement declaration) {
    if (declaration instanceof PsiField) {
      return getWrappedPropertyType((PsiField)declaration, declaration.getProject(), JavaFxCommonNames.ourWritableMap);
    }
    if (declaration instanceof PsiMethod method) {
      if (!method.getParameterList().isEmpty()) {
        return getSetterArgumentType(method);
      }
      final String propertyName = PropertyUtilBase.getPropertyName(method);
      final PsiClass psiClass = containingClass != null ? containingClass : method.getContainingClass();
      if (propertyName != null && containingClass != null) {
        final PsiMethod setter = findInstancePropertySetter(psiClass, propertyName);
        if (setter != null) {
          final PsiType setterArgumentType = getSetterArgumentType(setter);
          if (setterArgumentType != null) return setterArgumentType;
        }
      }
      return getGetterReturnType(method);
    }
    return null;
  }
public static @Nullable PsiType getWritablePropertyType(@Nullable PsiClass containingClass, @Nullable PsiElement declaration)