@SuppressWarnings("DuplicatedCode")
  Object deserializeUnsafe(Object context, @NotNull Element element) {
    Object currentValue = accessor.read(context);
    if (binding instanceof BeanBinding && !accessor.isWritable()) {
      ((BeanBinding)binding).deserializeInto(currentValue, element);
      return context;
    }

    Object deserializedValue;
    if (beanStyle == Property.Style.ATTRIBUTE && binding instanceof BeanBinding && ((BeanBinding)binding).beanClass == Rectangle.class) {
      String xA = element.getAttributeValue("x");
      String yA = element.getAttributeValue("y");
      String wA = element.getAttributeValue("width");
      String hA = element.getAttributeValue("height");

      if (xA != null && yA != null && wA != null && hA != null) {
        int x = StringUtilRt.parseInt(xA, 0);
        int y = StringUtilRt.parseInt(yA, 0);
        int h = StringUtilRt.parseInt(hA, 0);
        int w = StringUtilRt.parseInt(wA, 0);
        deserializedValue = new Rectangle(x, y, w, h);
      }
      else {
        return context;
      }
    }
    else {
      deserializedValue = binding.deserialize(currentValue, element, JdomAdapter.INSTANCE);
    }

    if (currentValue != deserializedValue) {
      accessor.set(context, deserializedValue);
    }
    return context;
  }
@SuppressWarnings("DuplicatedCode")
  Object deserializeUnsafe(Object context, @NotNull Element element)