handler.recordValues(elem, o, f,  value); handler.recordValues(text, o, f,  value);
  protected void saveDataTypeMany(EObject o, EStructuralFeature f)  {    List values = (List)helper.getValue(o, f);    int size = values.size();    if (size > 0)    {      // for performance reasons saveNil and saveElement are not used      if (!toDOM)      {        EDataType d = (EDataType)f.getEType();        EPackage ePackage = d.getEPackage();        EFactory fac = ePackage.getEFactoryInstance();        String name = helper.getQName(f);        for (int i = 0; i < size; ++i)        {          Object value = values.get(i);          if (value == null)          {            doc.startElement(name);            doc.addAttribute(XSI_NIL, "true");            doc.endEmptyElement();            declareXSI = true;          }          else          {            doc.startElement(name);            String svalue = helper.convertToString(fac, d, value);            if (escape != null)            {              svalue = escape.convert(svalue);            }            doc.endContentElement(svalue);          }        }      }      else      {        EDataType d = (EDataType)f.getEType();        EPackage ePackage = d.getEPackage();        EFactory fac = ePackage.getEFactoryInstance();        helper.populateNameInfo(nameInfo, f);        for (int i = 0; i < size; ++i)        {          Object value = values.get(i);          if (value == null)          {            Element elem = document.createElementNS(nameInfo.getNamespaceURI(), nameInfo.getQualifiedName());            elem.setAttributeNS(XMLResource.XSI_URI, XSI_NIL, "true");            if (DEBUG_DOM)            {              System.out.println("-->many(nil): " + elem.getNodeName() + "; container: " + o.eClass().getName() + "; feature: " + f.getName());            }            handler.recordEObject(elem, null, o, f);            currentNode.appendChild(elem);            declareXSI = true;          }          else          {            Element elem = document.createElementNS(nameInfo.getNamespaceURI(), nameInfo.getQualifiedName());            Node text = document.createTextNode(helper.convertToString(fac, d, value));            elem.appendChild(text);            if (DEBUG_DOM)            {              System.out.println("-->many: " + elem.getNodeName() + "; container: " + o.eClass().getName() + "; feature: " + f.getName());              System.out.println("-->" + text);            }            handler.recordEObject(elem, null, o, f);            currentNode.appendChild(elem);          }        }      }    }  }