@Override
 public Map<String, Object> getDataMap() {
   Map<String, Object> data = super.getDataMap();
   data.put("cssClassName", this.cssClassName);
   data.put("legend", this.legend);
   data.put("id", this.id);
   data.put("i18n", this.i18n);
   List<Object> mapItems = new ArrayList<Object>();
   for (FormItemRepresentation item : this.items) {
     mapItems.add(item.getDataMap());
   }
   data.put("items", mapItems);
   return data;
 }
 @Override
 @SuppressWarnings("unchecked")
 public void setDataMap(Map<String, Object> data) throws FormEncodingException {
   super.setDataMap(data);
   this.cssClassName = (String) data.get("cssClassName");
   this.id = (String) data.get("id");
   this.legend = (String) data.get("legend");
   Map<String, String> i18nMap = (Map<String, String>) data.get("i18n");
   if (i18nMap != null) {
     this.i18n = new HashMap<String, String>();
     this.i18n.putAll(i18nMap);
   }
   this.items.clear();
   List<Object> mapItems = (List<Object>) data.get("items");
   FormRepresentationDecoder decoder = FormEncodingFactory.getDecoder();
   if (mapItems != null) {
     for (Object obj : mapItems) {
       Map<String, Object> itemMap = (Map<String, Object>) obj;
       FormItemRepresentation item = (FormItemRepresentation) decoder.decode(itemMap);
       this.items.add(item);
     }
   }
 }