MapNamespaceContext namespaces = new MapNamespaceContext();
// we should not add the out namespace here, as it is not a part of root element
/*for (Map.Entry<String, String> entry : getNamespaces().entrySet()) {
namespaces.addNamespace(entry.getKey(), entry.getValue());
}*/
ElementWriter rootWriter = getElementWriter(element, namespaces);
Context context = getContext();
// get AegisType based on the object instance
assertNotNull("type is null", type);
// write the ref
SoapRefType soapRefType = new SoapRefType(type);
MessageWriter cwriter = rootWriter.getElementWriter(soapRefType.getSchemaType());
soapRefType.writeObject(instance, cwriter, context);
cwriter.close();
// write the trailing blocks (referenced objects)
trailingBlocks.writeBlocks(rootWriter, context);