assert baseLocation != null;
assert workingDirectory != null;
assert repositories != null;
assert serviceClassLoader != null;
assert flowCompilerOptions != null;
FlowCompilerConfiguration config = new FlowCompilerConfiguration();
ModelFactory factory = Models.getModelFactory();
config.setBatchId(batchId);
config.setFlowId(flowId);
config.setFactory(factory);
config.setProcessors(new SpiFlowElementProcessorRepository());
config.setExternals(new SpiExternalIoDescriptionProcessorRepository());
config.setDataClasses(new SpiDataClassRepository());
config.setGraphRewriters(new SpiFlowGraphRewriterRepository());
config.setPackager(new FilePackager(workingDirectory, repositories));
config.setRootPackageName(basePackageName);
config.setRootLocation(baseLocation);
config.setServiceClassLoader(serviceClassLoader);
config.setOptions(flowCompilerOptions);
config.setBuildId(UUID.randomUUID().toString());
return config;
}