code: public JSONDoc getJSONDoc(String version, String basePath, List<String> packages, boolean playgroundEnabled, MethodDisplay displayMethodAs) {
  		Set<URL> urls = new HashSet<URL>();
  		FilterBuilder filter = new FilterBuilder();
  		
  		log.debug("Found " + packages.size() + " package(s) to scan...");
  		for (String pkg : packages) {
  			log.debug("Adding package to JSONDoc recursive scan: " + pkg);
  			urls.addAll(ClasspathHelper.forPackage(pkg));
  			filter.includePackage(pkg);
  		}
  
  		reflections = new Reflections(new ConfigurationBuilder().filterInputsBy(filter).setUrls(urls).addScanners(new MethodAnnotationsScanner()));
  		
  		JSONDoc jsondocDoc = new JSONDoc(version, basePath);
  		jsondocDoc.setPlaygroundEnabled(playgroundEnabled);
  		jsondocDoc.setDisplayMethodAs(displayMethodAs);
  		
  		jsondocControllers = jsondocControllers();
  		jsondocObjects = jsondocObjects(packages);
  		jsondocFlows = jsondocFlows();
  		jsondocGlobal = jsondocGlobal();
  		jsondocChangelogs = jsondocChangelogs();
  		jsondocMigrations = jsondocMigrations();
  
  		for (Class<?> clazz : jsondocObjects) {
  			jsondocTemplates.put(clazz, JSONDocTemplateBuilder.build(clazz, jsondocObjects));
  		}
  		
  		jsondocDoc.setApis(getApiDocsMap(jsondocControllers, displayMethodAs));
  		jsondocDoc.setObjects(getApiObjectsMap(jsondocObjects));
  		jsondocDoc.setFlows(getApiFlowDocsMap(jsondocFlows, allApiMethodDocs));
  		jsondocDoc.setGlobal(getApiGlobalDoc(jsondocGlobal, jsondocChangelogs, jsondocMigrations));
  		
  		return jsondocDoc;
  	}
docs: Returns the main <code>ApiDoc</code>, containing <code>ApiMethodDoc</code> and <code>ApiObjectDoc</code> objects
  @return An <code>ApiDoc</code> object