@Override
 protected AbstractRecord buildCompositeRow(
     Object attributeValue,
     AbstractSession session,
     AbstractRecord parentRow,
     WriteType writeType) {
   if (((EISDescriptor) getDescriptor()).getDataFormat() == EISDescriptor.XML) {
     XMLObjectBuilder objectBuilder =
         (XMLObjectBuilder) getReferenceDescriptor(attributeValue, session).getObjectBuilder();
     return objectBuilder.buildRow(attributeValue, session, getField(), (XMLRecord) parentRow);
   } else {
     return this.getObjectBuilder(attributeValue, session)
         .buildRow(attributeValue, session, writeType);
   }
 }
  protected AbstractRecord buildCompositeRowForDescriptor(
      ClassDescriptor classDesc,
      Object attributeValue,
      AbstractSession session,
      XMLRecord parentRow,
      WriteType writeType) {
    XMLObjectBuilder objectBuilder = (XMLObjectBuilder) classDesc.getObjectBuilder();

    XMLRecord child =
        (XMLRecord)
            objectBuilder.createRecordFor(attributeValue, (XMLField) getField(), parentRow, this);
    child.setNamespaceResolver(parentRow.getNamespaceResolver());
    child.setSession(session);
    objectBuilder.buildIntoNestedRow(
        child,
        attributeValue,
        session,
        (XMLDescriptor) getReferenceDescriptor(),
        (XMLField) getField());
    return child;
  }