private static int ToInt(ParameterCompareAggregateResult result)
        {
            switch (result)
            {
            case ParameterCompareAggregateResult.NotEqual:
                return(10);

            case ParameterCompareAggregateResult.DifferentLength:
                return(0);

            case ParameterCompareAggregateResult.Equal:
                return(30);

            case ParameterCompareAggregateResult.EqualOrCanBeConverting:
                return(50);

            default:
                throw new ArgumentOutOfRangeException(nameof(result), result, null);
            }
        }
 private static ParameterCompareAggregateResult Aggregate(ParameterCompareAggregateResult result, ParameterCompareAggregateResult newResult)
 {
     return(ToInt(result) < ToInt(newResult) ? result : newResult);
 }
 private static ParameterCompareAggregateResult Aggregate(ParameterCompareAggregateResult result, CompareResult compareResult)
 {
     return(Aggregate(result, Convert(compareResult)));
 }