public static List<SModelDescriptor> getLanguageModels(Language lang) { List<SModelDescriptor> inputModels = new ArrayList<SModelDescriptor>(); for (LanguageAspect aspect : LanguageAspect.values()) { SModelDescriptor model = aspect.get(lang); if (model != null) { inputModels.add(model); } } Set<SModelDescriptor> ownModels = new HashSet<SModelDescriptor>(lang.getOwnModelDescriptors()); for (SModelDescriptor sm : lang.getAccessoryModels()) { if (!SModelStereotype.isUserModel(sm)) continue; if (!(sm instanceof EditableSModelDescriptor)) continue; if (ownModels.contains(sm)) { inputModels.add(((EditableSModelDescriptor) sm)); } } inputModels.addAll(lang.getUtilModels()); // add it from all generators List<Generator> list = lang.getGenerators(); for (Generator generator : list) { inputModels.addAll(generator.getGeneratorModels()); } return inputModels; }