private void writeRaElement(XMLExtendedStreamWriter streamWriter, ModelNode ra)
        throws XMLStreamException {
      streamWriter.writeStartElement(ResourceAdapters.Tag.RESOURCE_ADAPTER.getLocalName());

      ARCHIVE.marshallAsElement(ra, streamWriter);

      if (ra.hasDefined(BEANVALIDATIONGROUPS.getName())) {
        for (ModelNode bvg : ra.get(BEANVALIDATIONGROUPS.getName()).asList()) {
          BEANVALIDATIONGROUPS.marshallAsElement(bvg, streamWriter);
        }
      }

      BOOTSTRAPCONTEXT.marshallAsElement(ra, streamWriter);
      TRANSACTIONSUPPORT.marshallAsElement(ra, streamWriter);
      writeNewConfigProperties(streamWriter, ra);
      TransactionSupportEnum transactionSupport =
          ra.hasDefined(TRANSACTIONSUPPORT.getName())
              ? TransactionSupportEnum.valueOf(ra.get(TRANSACTIONSUPPORT.getName()).asString())
              : null;
      boolean isXa = false;
      if (transactionSupport == TransactionSupportEnum.XATransaction) {
        isXa = true;
      }
      if (ra.hasDefined(CONNECTIONDEFINITIONS_NAME)) {
        streamWriter.writeStartElement(ResourceAdapter.Tag.CONNECTION_DEFINITIONS.getLocalName());
        for (Property conDef : ra.get(CONNECTIONDEFINITIONS_NAME).asPropertyList()) {
          writeConDef(streamWriter, conDef.getValue(), conDef.getName(), isXa);
        }
        streamWriter.writeEndElement();
      }

      if (ra.hasDefined(ADMIN_OBJECTS_NAME)) {
        streamWriter.writeStartElement(ResourceAdapter.Tag.ADMIN_OBJECTS.getLocalName());
        for (Property adminObject : ra.get(ADMIN_OBJECTS_NAME).asPropertyList()) {
          writeAdminObject(streamWriter, adminObject.getValue(), adminObject.getName());
        }
        streamWriter.writeEndElement();
      }
      streamWriter.writeEndElement();
    }