def self.ary2md(ary, rank, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT)
registry ||= Mapping::DefaultRegistry
type = XSD::QName.new(type_ns, typename)
md_ary = SOAPArray.new(ValueArrayName, rank, type)
protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
Thread.current[:SOAPMarshalDataKey] = {}
Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
add_md_ary(md_ary, ary, [], registry)
end
md_ary
end