'Cast the I{untyped} list items found in content I{value}.
Each items contained in the list is checked for XSD type information.
Items (values) that are I{untyped}, are replaced with suds objects and
type I{metadata} is added.
@param content: The content holding the collection.
@type content: L{Content}
@return: self
@rtype: L{Encoded}'

def cast(self, content):

    aty = content.aty[1]
    resolved = content.type.resolve()
    array = Factory.object(resolved.name)
    array.item = []
    query = TypeQuery(aty)
    ref = query.execute(self.schema)
    if (ref is None):
        raise TypeNotFound(qref)
    for x in content.value:
        if isinstance(x, (list, tuple)):
            array.item.append(x)
            continue
        if isinstance(x, Object):
            md = x.__metadata__
            md.sxtype = ref
            array.item.append(x)
            continue
        if isinstance(x, dict):
            x = Factory.object(ref.name, x)
            md = x.__metadata__
            md.sxtype = ref
            array.item.append(x)
            continue
        x = Factory.property(ref.name, x)
        md = x.__metadata__
        md.sxtype = ref
        array.item.append(x)
    content.value = array
    return self
