<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def clean(self, value):
 """ Clean the data and validate the nested spec. Implementation is the same as for other fields but in addition, this will propagate the validation to the nested spec. """


        obj = self.factory.create(value)

        # todo: what if the field defines properties that have any of
        # these names:
        if obj:
            del obj.fields
            del obj.alias
            del obj.validators
            del obj.required
            del obj.factory

        # do own cleaning first...
        self._validate_existence(obj)
        self._run_validators(obj)

        # ret = {}
        # for name in self.fields.keys():
        #     ret[name] = getattr(obj, name)
        # return ret
        return obj