'Return the value of \'key\' from the target.
If the target has the attribute \'key\', return it.
:param key: value to retrieve'

def __getitem__(self, key):

    key = self.key_transforms(key)
    value = getattr(self.target, key, self.SENTINEL)
    if (value is self.SENTINEL):
        extra_properties = getattr(self.target, 'extra_properties', None)
        if (extra_properties is not None):
            value = extra_properties[key]
        else:
            value = None
    return value
