newRef.setContainment(ref.isContainment());
if (refDestEMF != null) {
newRef.setType(refDestEMF);
} else {
// is there an external class?
EMFExternalClass refExternalClass = getEMFExternalClassFor(root, refDest);
if (refExternalClass == null) {
// we need to create one
refExternalClass = factory.createEMFExternalClass();
refExternalClass.setName(refDest.getName());
EPackage pkg = refDest.getEPackage();
if (pkg != null) {
refExternalClass.setTargetClass(refDest);
refExternalClass.setPackageName(pkg.getName());
refExternalClass.setPackageURI(pkg.getNsURI());
refExternalClass.setPackagePrefix(pkg.getNsPrefix());
}
root.getExternalClasses().add(refExternalClass);
}
newRef.setType(refExternalClass);
}