'Returns a mapped object.
:param name the name of the property
:returns the mapped object or exception NotFoundMapping'

def get_property_by_name(self, name):

    if (('.' not in name) and (name in self.properties)):
        return self.properties[name]
    tokens = name.split('.')
    object = self
    for token in tokens:
        if isinstance(object, (DocumentObjectField, ObjectField, NestedObject)):
            if (token in object.properties):
                object = object.properties[token]
                continue
        elif isinstance(object, MultiField):
            if (token in object.fields):
                object = object.fields[token]
                continue
        raise MappedFieldNotFoundException(token)
    if isinstance(object, (AbstractField, MultiField)):
        return object
    raise MappedFieldNotFoundException(object)
