code: func (a *appScanner) Parse() (*spec.Swagger, error) {
  	// classification still includes files that are completely commented out
  	cp, err := a.classifier.Classify(a.prog)
  	if err != nil {
  		return nil, err
  	}
  
  	// build models dictionary
  	if a.scanModels {
  		for _, modelsFile := range cp.Models {
  			if err := a.parseSchema(modelsFile); err != nil {
  				return nil, err
  			}
  		}
  	}
  
  	// build parameters dictionary
  	for _, paramsFile := range cp.Parameters {
  		if err := a.parseParameters(paramsFile); err != nil {
  			return nil, err
  		}
  	}
  
  	// build responses dictionary
  	for _, responseFile := range cp.Responses {
  		if err := a.parseResponses(responseFile); err != nil {
  			return nil, err
  		}
  	}
  
  	// build definitions dictionary
  	if err := a.processDiscovered(); err != nil {
  		return nil, err
  	}
  
  	// build paths dictionary
  	for _, routeFile := range cp.Routes {
  		if err := a.parseRoutes(routeFile); err != nil {
  			return nil, err
  		}
  	}
  	for _, operationFile := range cp.Operations {
  		if err := a.parseOperations(operationFile); err != nil {
  			return nil, err
  		}
  	}
  
  	// build swagger object
  	for _, metaFile := range cp.Meta {
  		if err := a.parseMeta(metaFile); err != nil {
  			return nil, err
  		}
  	}
  
  	if a.input.Swagger == "" {
  		a.input.Swagger = "2.0"
  	}
  
  	return a.input, nil
  }
docs: // Parse produces a swagger object for an application