public void serializeBody(BeanT o, XMLSerializer w, Object outerPeer)
      throws SAXException, AccessorException, IOException, XMLStreamException {
    ValueT v = acc.get(o);
    if (v != null) {
      bareStartTag(w, tagName, v);
      for (Map.Entry e : (Set<Map.Entry>) v.entrySet()) {
        bareStartTag(w, entryTag, null);

        Object key = e.getKey();
        if (key != null) {
          w.startElement(keyTag, key);
          w.childAsXsiType(key, fieldName, keyBeanInfo, false);
          w.endElement();
        }

        Object value = e.getValue();
        if (value != null) {
          w.startElement(valueTag, value);
          w.childAsXsiType(value, fieldName, valueBeanInfo, false);
          w.endElement();
        }

        w.endElement();
      }
      w.endElement();
    } else if (nillable) {
      w.startElement(tagName, null);
      w.writeXsiNilTrue();
      w.endElement();
    }
  }
 private void bareStartTag(XMLSerializer w, Name tagName, Object peer)
     throws IOException, XMLStreamException, SAXException {
   w.startElement(tagName, peer);
   w.endNamespaceDecls(peer);
   w.endAttributes();
 }