Inheritance: SemanticModelMetricsCalculator
		private async Task<Tuple<Compilation, IEnumerable<IMemberMetric>>> CalculateMemberMetrics(Compilation compilation, TypeDeclaration typeNodes, Solution solution)
		{
			var comp = compilation;
			var metrics = typeNodes.SyntaxNodes
				.Select(async info =>
				{
					var tuple = await VerifyCompilation(comp, info).ConfigureAwait(false);
					var semanticModel = tuple.Item2;
					comp = tuple.Item1;
					var calculator = new MemberMetricsCalculator(semanticModel, solution, _memberDocumentationFactory);

					return await calculator.Calculate(info).ConfigureAwait(false);
				});
			var results = await Task.WhenAll(metrics).ConfigureAwait(false);
			return new Tuple<Compilation, IEnumerable<IMemberMetric>>(comp, results.SelectMany(x => x).AsArray());
		}
		protected override Task<EvaluationResult> EvaluateImpl(SyntaxNode node, SemanticModel semanticModel, Solution solution)
		{
			var counter = new MemberMetricsCalculator(semanticModel, solution, null);

			var methodDeclaration = (MethodDeclarationSyntax)node;
			var metric = counter.CalculateSlim(methodDeclaration);
			return metric.MaintainabilityIndex <= Threshold
					   ? Task.FromResult(
						   new EvaluationResult
							   {
								   Snippet = node.ToFullString()
							   })
					   : Task.FromResult((EvaluationResult)null);
		}