internal string FromAssemblyType(string[] classNames, string settingsData)
            {
                var settings = JsonConvert.DeserializeObject <AssemblyTypeToSwaggerGeneratorSettings>(settingsData);

                RegisterReferencePaths(GetAllReferencePaths(settings));

                var document = new SwaggerDocument();

                var generator                = new JsonSchemaGenerator(settings);
                var schemaResolver           = new SchemaResolver();
                var schemaDefinitionAppender = new SwaggerDocumentSchemaDefinitionAppender(document, settings.TypeNameGenerator);

#if FullNet
                var assembly = Assembly.LoadFrom(settings.AssemblyPath);
#else
                var assembly = Context.LoadFromAssemblyPath(settings.AssemblyPath);
#endif
                foreach (var className in classNames)
                {
                    var type   = assembly.GetType(className);
                    var schema = generator.Generate(type, schemaResolver, schemaDefinitionAppender);
                    document.Definitions[type.Name] = schema;
                }

                return(document.ToJson());
            }
        /// <summary>Generates a Swagger specification for the given controller types.</summary>
        /// <param name="controllerTypes">The types of the controller.</param>
        /// <returns>The <see cref="SwaggerDocument" />.</returns>
        /// <exception cref="InvalidOperationException">The operation has more than one body parameter.</exception>
        public SwaggerDocument GenerateForControllers(IEnumerable <Type> controllerTypes)
        {
            var document = CreateDocument(Settings);

            var schemaResolver           = new SchemaResolver();
            var schemaDefinitionAppender = new SwaggerDocumentSchemaDefinitionAppender(document,
                                                                                       Settings.TypeNameGenerator);

            foreach (var controllerType in controllerTypes)
            {
                GenerateForController(document, controllerType,
                                      new SwaggerGenerator(_schemaGenerator, Settings, schemaResolver, schemaDefinitionAppender));
            }


            AppendRequiredSchemasToDefinitions(document, schemaResolver);
            document.GenerateOperationIds();

            foreach (var processor in Settings.DocumentProcessors)
            {
                processor.Process(new DocumentProcessorContext(document, controllerTypes));
            }

            return(document);
        }