no one except AnalyzerManager should call analyzer.SupportedDiagnostics to make sure we cache them and only call it once. reasoning behind it is that the SupportedDiagnostics is a metadata and we should guard us from analyzer author mis-using it by us calling it only once.