def refine (self, requirements):
        """ Refines this set's properties using the requirements passed as an argument.
        """
        assert isinstance(requirements, PropertySet)
        if requirements not in self.refined_:
            r = property.refine(self.all_, requirements.all_)

            self.refined_[requirements] = create(r)

        return self.refined_[requirements]