Takes a target reference, which might be either target id
            or a dependency property, and generates that target using
            'property_set' as build request.

            Returns a tuple (result, usage_requirements).

def generate_dependency_properties(self, properties, ps):
        """ Takes a target reference, which might be either target id
            or a dependency property, and generates that target using
            'property_set' as build request.

            Returns a tuple (result, usage_requirements).
        """
        assert is_iterable_typed(properties, property.Property)
        assert isinstance(ps, property_set.PropertySet)
        result_properties = []
        usage_requirements = []
        for p in properties:

            result = generate_from_reference(p.value, self.project_, ps)

            for t in result.targets():
                result_properties.append(property.Property(p.feature, t))

            usage_requirements += result.usage_requirements().all()

        return (result_properties, usage_requirements)