public static int GetHashCodeFor(MethodReference obj)
        {
            // a very good prime number
            const int hashCodeMultiplier = 486187739;

            var genericInstanceMethod = obj as GenericInstanceMethod;

            if (genericInstanceMethod != null)
            {
                var hashCode = GetHashCodeFor(genericInstanceMethod.ElementMethod);
                for (var i = 0; i < genericInstanceMethod.GenericArguments.Count; i++)
                {
                    hashCode = hashCode * hashCodeMultiplier + TypeReferenceEqualityComparer.GetHashCodeFor(genericInstanceMethod.GenericArguments[i]);
                }
                return(hashCode);
            }

            return(TypeReferenceEqualityComparer.GetHashCodeFor(obj.DeclaringType) * hashCodeMultiplier + obj.Name.GetHashCode());
        }