code: func mergeSpecs(staticSpec *spec.Swagger, crdSpecs ...*spec.Swagger) *spec.Swagger {
  	// create shallow copy of staticSpec, but replace paths and definitions because we modify them.
  	specToReturn := *staticSpec
  	if staticSpec.Definitions != nil {
  		specToReturn.Definitions = spec.Definitions{}
  		for k, s := range staticSpec.Definitions {
  			specToReturn.Definitions[k] = s
  		}
  	}
  	if staticSpec.Paths != nil {
  		specToReturn.Paths = &spec.Paths{
  			Paths: map[string]spec.PathItem{},
  		}
  		for k, p := range staticSpec.Paths.Paths {
  			specToReturn.Paths.Paths[k] = p
  		}
  	}
  
  	for _, s := range crdSpecs {
  		mergeSpec(&specToReturn, s)
  	}
  
  	return &specToReturn
  }
docs: // mergeSpecs aggregates all OpenAPI specs, reusing the metadata of the first, static spec as the basis.