protected void addNodeImports(SNode node) { final SModelInternal modelInternal = (SModelInternal) myModel; final AbstractModule module = ((AbstractModule) myModel.getModule()); final Collection<SLanguage> importedLanguages = modelInternal.importedLanguageIds(); for (SNode subNode : ListSequence.fromList( SNodeOperations.getNodeDescendants(node, null, true, new SAbstractConcept[] {}))) { SLanguage usedLanguage = subNode.getConcept().getLanguage(); if (!(importedLanguages.contains(usedLanguage))) { modelInternal.addLanguage(usedLanguage); } for (SReference ref : ListSequence.fromList(SNodeOperations.getReferences(subNode))) { SModel usedModel = SNodeOperations.getModel(SLinkOperations.getTargetNode(ref)); if (usedModel != null && !(modelInternal.importedModels().contains(usedModel))) { modelInternal.addModelImport(usedModel.getReference(), false); module.addDependency( SNodeOperations.getModel(SLinkOperations.getTargetNode(ref)) .getModule() .getModuleReference(), false); } } } }