public void initialSyncUIWithDataModel() {
    // Esto es necesario por ejemplo porque al inicializarse el UI se eliminan todos
    // los nodos, volverán a crearse al sincronizarse con el data model,
    // pero ahora sin el atributo selected que había originalmente en los nodos
    // seleccionados

    ItsNatHTMLSelectMultImpl comp = getItsNatHTMLSelectMult();
    ListSelectionModel selModel = comp.getListSelectionModel();

    int len = comp.getListModel().getSize();
    ItsNatListMultSelUIInternal compUI = comp.getItsNatListMultSelUIInternal();
    for (int i = 0; i <= len; i++) {
      boolean selected = selModel.isSelectedIndex(i);
      compUI.setSelectedIndex(i, selected);
    }

    HTMLSelectElement elem = getItsNatHTMLSelectMult().getHTMLSelectElement();
    ((ItsNatNodeInternal) elem)
        .addEventListenerInternal(
            "DOMCharacterDataModified",
            this,
            false); // Para cuando cambie el contenido de una opción
    ((ItsNatNodeInternal) elem)
        .addEventListenerInternal("DOMAttrModified", this, false); // Para el atributo selected

    super.initialSyncUIWithDataModel();
  }
  public void dispose() {
    super.dispose();

    HTMLSelectElement elem = getItsNatHTMLSelect().getHTMLSelectElement();
    ((ItsNatNodeInternal) elem)
        .removeEventListenerInternal("DOMCharacterDataModified", this, false);
    ((ItsNatNodeInternal) elem).removeEventListenerInternal("DOMAttrModified", this, false);
  }
  public void handleEvent(Event evt) {
    super.handleEvent(evt);

    ItsNatHTMLSelectMultImpl comp = getItsNatHTMLSelectMult();
    //        if (comp.isServerUpdatingFromClient())
    //            return;

    String type = evt.getType();
    if (type.equals("DOMCharacterDataModified")) {
      MutationEvent mutEvent = (MutationEvent) evt;
      CharacterData charDataNode = (CharacterData) mutEvent.getTarget();
      HTMLOptionElement option = (HTMLOptionElement) charDataNode.getParentNode();
      int index = option.getIndex();
      String value = charDataNode.getData();
      DefaultListModel dataModel = (DefaultListModel) comp.getListModel();
      if (!value.equals(dataModel.get(index))) dataModel.set(index, value);
    }
  }