public bool Equals(UnificationKey other)
            {
                if (!GenericTypeDefinition.Equals(other.GenericTypeDefinition))
                {
                    return(false);
                }
                if (GenericTypeArguments.Length != other.GenericTypeArguments.Length)
                {
                    return(false);
                }
                for (int i = 0; i < GenericTypeArguments.Length; i++)
                {
                    if (!(GenericTypeArguments[i].Equals(other.GenericTypeArguments[i])))
                    {
                        return(false);
                    }
                }

                // The TypeHandle is not actually part of the key but riding along for convenience (see commment at head of class.)
                // If the other parts of the key matched, this must too.
                Debug.Assert(TypeHandle.Equals(other.TypeHandle));
                return(true);
            }