protected Iterable<ModelRoot> loadRoots() { ModuleDescriptor descriptor = getModuleDescriptor(); if (descriptor == null) { return Collections.emptyList(); } List<ModelRoot> result = new ArrayList<ModelRoot>(); for (ModelRootDescriptor modelRoot : descriptor.getModelRootDescriptors()) { try { ModelRootFactory modelRootFactory = PersistenceFacade.getInstance().getModelRootFactory(modelRoot.getType()); if (modelRootFactory == null) { LOG.error( "Unknown model root type: `" + modelRoot.getType() + "'. Requested by: " + this); continue; } ModelRoot root = modelRootFactory.create(); Memento mementoWithFS = new MementoWithFS(modelRoot.getMemento(), myFileSystem); root.load(mementoWithFS); result.add(root); } catch (Exception e) { LOG.error( "Error loading models from root with type: `" + modelRoot.getType() + "'. Requested by: " + this, e); } } return result; }