private LogicalReference createReference(JavaServiceContract contract) {
LogicalCompositeComponent domainComponent = lcm.getRootComponent();
int id = idCounter.getAndIncrement();
String name = "Synthetic" + id;
URI componentUri = URI.create(domainComponent.getUri().toString() + "/" + name);
URI referenceUri = URI.create(componentUri.toString() + "#reference");
QName qName = new QName(HostNamespaces.SYNTHESIZED, "SyntheticComposite" + id);
Composite composite = new Composite(qName);
ComponentDefinition<NonManagedImplementation> componentDefinition = new ComponentDefinition<>(name);
componentDefinition.setParent(composite);
NonManagedImplementation implementation = new NonManagedImplementation();
componentDefinition.setImplementation(implementation);
ComponentReference reference = new ComponentReference("reference", Multiplicity.ONE_ONE);
componentDefinition.add(reference);
LogicalComponent<NonManagedImplementation> logicalComponent = new LogicalComponent<>(componentUri, componentDefinition, domainComponent);
logicalComponent.setZone(info.getZoneName());
reference.setServiceContract(contract);
LogicalReference logicalReference = new LogicalReference(referenceUri, reference, logicalComponent);
logicalReference.setServiceContract(contract);
logicalComponent.addReference(logicalReference);
return logicalReference;
}