public static Module createModule(Scope sourceScope, Scope targetScope) throws ConfigurationLoadException {
Component sourceComponent = createNonIntrospectedComponent("source", ModuleScopeComponent.class, ModuleScopeComponentImpl.class, sourceScope);
Component targetComponent = createNonIntrospectedComponent("target", ModuleScopeComponent.class, ModuleScopeComponentImpl.class, targetScope);
Service targetService = factory.createService();
JavaServiceContract targetContract = factory.createJavaServiceContract();
targetContract.setInterface(GenericComponent.class);
targetService.setServiceContract(targetContract);
targetService.setName("GenericComponent");
targetContract.setScope(targetScope);
ConfiguredService cTargetService = factory.createConfiguredService();
cTargetService.setPort(targetService);
cTargetService.initialize(assemblyContext);
targetComponent.getConfiguredServices().add(cTargetService);
targetComponent.initialize(assemblyContext);
Reference ref = factory.createReference();
ref.setName("setGenericComponent");
JavaServiceContract inter = factory.createJavaServiceContract();
inter.setInterface(GenericComponent.class);
ref.setServiceContract(inter);
sourceComponent.getImplementation().getComponentType().getReferences().add(ref);
ConfiguredReference cref = factory.createConfiguredReference("setGenericComponent", "target");
cref.initialize(assemblyContext);