private bool FindMethodDefinition(TypeDefinition type, string methodName, string[] parameterNames, bool findGenericDefinition, out MethodDefinition methodDefinition)
{
List<MethodDefinition> methodDefinitions;
if (!findGenericDefinition)
{
methodDefinitions = type.Methods.Where(x => x.Name == methodName).OrderBy(definition => definition.Parameters.Count).ToList();
}
else
{
methodDefinitions = (from method in type.Methods where method.Name == methodName && method.HasGenericParameters select method).ToList();
}
if (parameterNames != null)
{
methodDefinitions = methodDefinitions.Where(x => x.Parameters.Select(y => y.Name).ToArray().SequenceEqual(parameterNames)).ToList();
}
methodDefinition = methodDefinitions.FirstOrDefault();
return methodDefinition != null;
}