protected final void readProperties(final Element element,final PropertiesProvider provider){
  if (provider == null) {
    return;
  }
  Element propertiesElement=LwXmlReader.getChild(element,UIFormXmlConstants.ELEMENT_PROPERTIES);
  if (propertiesElement == null) {
    propertiesElement=new Element(UIFormXmlConstants.ELEMENT_PROPERTIES,element.getNamespace());
  }
  final HashMap name2property=provider.getLwProperties(getComponentClassName());
  if (name2property == null) {
    myErrorComponentProperties=(Element)propertiesElement.clone();
    return;
  }
  final List propertyElements=propertiesElement.getChildren();
  for (int i=0; i < propertyElements.size(); i++) {
    final Element t=(Element)propertyElements.get(i);
    final String name=t.getName();
    final LwIntrospectedProperty property=(LwIntrospectedProperty)name2property.get(name);
    if (property == null) {
      continue;
    }
    try {
      final Object value=property.read(t);
      setPropertyValue(property,value);
    }
 catch (    final Exception exc) {
    }
  }
  readClientProperties(element);
}

protected final void readProperties ( final Element element , final PropertiesProvider provider ) { if ( provider == null ) { return ; } Element propertiesElement = LwXmlReader . getChild ( element , UIFormXmlConstants . ELEMENT_PROPERTIES ) ; if ( propertiesElement == null ) { propertiesElement = new Element ( UIFormXmlConstants . ELEMENT_PROPERTIES , element . getNamespace ( ) ) ; } final HashMap name2property = provider . getLwProperties ( getComponentClassName ( ) ) ; if ( name2property == null ) { myErrorComponentProperties = ( Element ) propertiesElement . clone ( ) ; return ; } final List propertyElements = propertiesElement . getChildren ( ) ; for ( int i = 0 ; i < propertyElements . size ( ) ; i ++ ) { final Element t = ( Element ) propertyElements . get ( i ) ; final String name = t . getName ( ) ; final LwIntrospectedProperty property = ( LwIntrospectedProperty ) name2property . get ( name ) ; if ( property == null ) { continue ; } try { final Object value = property . read ( t ) ; setPropertyValue ( property , value ) ; } catch ( final Exception exc ) { } } readClientProperties ( element ) ; }
' properties ' is not required subtag
