Preconditions.checkState(outputFolder != null, "The output folder was not set!");
Preconditions.checkState(outputFolder.isDirectory() && outputFolder.canWrite() && outputFolder.canExecute(), "output folder '%s' is not valid!", outputFolder.getAbsolutePath());
final List<DocumentVisitor> visitors = Lists.newArrayList();
visitors.add(new ServiceVisitor(templateLoader, context, swiftGeneratorConfig, outputFolder));
visitors.add(new StructVisitor(templateLoader, context, swiftGeneratorConfig, outputFolder));
visitors.add(new UnionVisitor(templateLoader, context, swiftGeneratorConfig, outputFolder));
visitors.add(new ExceptionVisitor(templateLoader, context, swiftGeneratorConfig, outputFolder));
visitors.add(new IntegerEnumVisitor(templateLoader, context, swiftGeneratorConfig, outputFolder));
visitors.add(new StringEnumVisitor(templateLoader, context, swiftGeneratorConfig, outputFolder));
visitors.add(new ConstantsVisitor(templateLoader, context, swiftGeneratorConfig, outputFolder));