Creates a new subvariant-dg instances for 'targets'
         - 'root-targets' the virtual targets will be returned to dependents
         - 'all-targets' all virtual
              targets created while building this main target
         - 'build-request' is property-set instance with
         requested build properties

def create_subvariant (self, root_targets, all_targets,
                           build_request, sources,
                           rproperties, usage_requirements):
        """Creates a new subvariant-dg instances for 'targets'
         - 'root-targets' the virtual targets will be returned to dependents
         - 'all-targets' all virtual
              targets created while building this main target
         - 'build-request' is property-set instance with
         requested build properties"""
        assert is_iterable_typed(root_targets, virtual_target.VirtualTarget)
        assert is_iterable_typed(all_targets, virtual_target.VirtualTarget)
        assert isinstance(build_request, property_set.PropertySet)
        assert is_iterable_typed(sources, virtual_target.VirtualTarget)
        assert isinstance(rproperties, property_set.PropertySet)
        assert isinstance(usage_requirements, property_set.PropertySet)

        for e in root_targets:
            e.root (True)

        s = Subvariant (self, build_request, sources,
                        rproperties, usage_requirements, all_targets)

        for v in all_targets:
            if not v.creating_subvariant():
                v.creating_subvariant(s)

        return s