public Set<Module> loadModules(
Set<Module> previousModules,
String definitionText,
Source source,
File currentDirectory,
List<File> lookupDirectories,
Set<File> requiredFiles,
boolean kore) {
List<org.kframework.kil.Module> kilModules =
slurp(definitionText, source, currentDirectory, lookupDirectories, requiredFiles);
Definition def = new Definition();
def.setItems((List<DefinitionItem>) (Object) kilModules);
Context context = new Context();
new CollectProductionsVisitor(kore, context).visit(def);
KILtoKORE kilToKore = new KILtoKORE(context, false, kore);
HashMap<String, Module> koreModules = new HashMap<>();
koreModules.putAll(previousModules.stream().collect(Collectors.toMap(Module::name, m -> m)));
HashSet<org.kframework.kil.Module> kilModulesSet = new HashSet<>(kilModules);
return kilModules.stream().map(m -> kilToKore.apply(m, kilModulesSet, koreModules)).flatMap(m -> Stream.concat(Stream.of(m), Stream.of(koreModules.get(m.name() + "$SYNTAX")))).collect(Collectors.toSet());
}