'Create the Python descriptor that will serve as
the access point on instances of the mapped class.'

def _create_descriptor(self):

    def fget(instance):
        dict_ = attributes.instance_dict(instance)
        state = attributes.instance_state(instance)
        if (self.key not in dict_):
            values = [getattr(instance, key) for key in self._attribute_keys]
            if ((self.key not in dict_) and ((state.key is not None) or (not _none_set.issuperset(values)))):
                dict_[self.key] = self.composite_class(*values)
                state.manager.dispatch.refresh(state, None, [self.key])
        return dict_.get(self.key, None)
    def fset(instance, value):
        dict_ = attributes.instance_dict(instance)
        state = attributes.instance_state(instance)
        attr = state.manager[self.key]
        previous = dict_.get(self.key, attributes.NO_VALUE)
        for fn in attr.dispatch.set:
            value = fn(state, value, previous, attr.impl)
        dict_[self.key] = value
        if (value is None):
            for key in self._attribute_keys:
                setattr(instance, key, None)
        else:
            for (key, value) in zip(self._attribute_keys, value.__composite_values__()):
                setattr(instance, key, value)
    def fdel(instance):
        state = attributes.instance_state(instance)
        dict_ = attributes.instance_dict(instance)
        previous = dict_.pop(self.key, attributes.NO_VALUE)
        attr = state.manager[self.key]
        attr.dispatch.remove(state, previous, attr.impl)
        for key in self._attribute_keys:
            setattr(instance, key, None)
    self.descriptor = property(fget, fset, fdel)
