code: protected IAnalysisCache createAnalysisCache() throws IOException {
          IAnalysisCache analysisCache = ClassFactory.instance().createAnalysisCache(classPath, bugReporter);
  
          // Register the "built-in" analysis engines
          registerBuiltInAnalysisEngines(analysisCache);
  
          // Register analysis engines in plugins
          registerPluginAnalysisEngines(detectorFactoryCollection, analysisCache);
  
          // Install the DetectorFactoryCollection as a database
          analysisCache.eagerlyPutDatabase(DetectorFactoryCollection.class, detectorFactoryCollection);
  
          Global.setAnalysisCacheForCurrentThread(analysisCache);
          return analysisCache;
      }
docs: Create the analysis cache object and register it for current execution thread.
  <p>
  This method is protected to allow clients override it and possibly reuse
  some previous analysis data (for Eclipse interactive re-build)
  
  @throws IOException
  if error occurs registering analysis engines in a plugin