anchor.diff:  [<AutoOpen>]
   module SwaggerGenerator =
       let swaggerPath = __SOURCE_DIRECTORY__ + @"\swagger.json"
  +    let swaggerSchemaCache = new ConcurrentDictionary<string, Schema>()
   
       // Helper methods
       let propVal instance propName (typ : Type) = typ.GetProperty(propName).GetValue(instance)
  
positive.code:         if allTags |> Seq.exists ((=)tag) |> not then allTags.Add tag
          tag
  
  
      let typeToSwaggerSchema (def : Definition) (coreType : Type) =  
          try
              // Initialize a core type to get the default values
              let instance = coreType.GetConstructor([||]).Invoke([||])
  
              let sBuilderType = (typedefof<SchemaBuilder<_>>).MakeGenericType(coreType)
              let sBuilder = sBuilderType.GetConstructor([||]).Invoke([||])
  
              // Set the default value if the type can be initialized
              match coreType.GetConstructor([||]) with
              | null -> ()
              | ctor -> let typInstance = ctor.Invoke([||])
                        sBuilderType.GetMethod("Default").Invoke(sBuilder, [| typInstance |]) |> ignore
  
              // Build the schema
              let schema = sBuilderType.GetMethod("Build").Invoke(sBuilder, [||]) :?> Schema
  
              // Populate the description
              schema.Description <- def.Summary
  
              // Populate the other fields
              schema.Properties
              |> Seq.iter (fun kv -> 
                  kv.Value.Description <- def.Properties |> valFromKey kv.Key def
                  kv.Value.Default <- coreType |> propVal instance kv.Key)
  
              // This is an exception for the Document dto that has a circular 
              // reference to itself. Swagger UI does not support this, therefore
              // I will remove that property
              if def.Name = "Document" then
                  schema.Properties.Remove("Default") |> ignore
  
              (def.Name, schema)
          with
          | e -> failwithf "An error occurred while converting type %s to Swagger model:\n%s" def.Name (e |> exceptionPrinter)
  
      let enumToSwaggerSchema (def : Definition) (coreEnum : Type) =
          try
  
negative.code:         | e -> failwithf "An error occurred while converting Web Service %s to Swagger operation:\n%s" ws.Name (e |> exceptionPrinter)
  
      let dtoDefinitions() = coreDtos |> Seq.zip docDtos
                             |> Seq.map (fun (doc, core) -> typeToSwaggerSchema core)
      let enumDefinitions() = coreEnums |> Seq.zip docEnums
                              |> Seq.map (fun (doc, core) -> enumToSwaggerSchema doc core)
      let wsApis() = coreWss |> Seq.zip docWss
                     |> Seq.map (fun (def, core) -> wsToSwaggerPath def core)
                     |> Seq.concat
  