Object (Object context, @NotNull XmlElement element) { Object currentValue = accessor.read(context); if (binding instanceof BeanBinding && !accessor.isWritable()) { ((BeanBinding)binding).deserializeInto(currentValue, element); } else { Object deserializedValue; if (beanStyle == Property.Style.ATTRIBUTE && binding instanceof BeanBinding && ((BeanBinding)binding).myBeanClass == 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.deserializeUnsafe(currentValue, element); } if (currentValue != deserializedValue) { accessor.set(context, deserializedValue); } } return context; }