public bool Equals()

in src/NuGet.Core/NuGet.Packaging/ContentModel/ContentItemCollection.cs [424:513]


            public bool Equals(ContentItem? x, ContentItem? y)
            {
                if (ReferenceEquals(x, y))
                {
                    return true;
                }
                if (x is null || y is null)
                {
                    return false;
                }

                if (x._properties == null && y._properties != null)
                {
                    return false;
                }

                if (x._properties != null && y._properties == null)
                {
                    return false;
                }

                if (x._properties?.Count != y._properties?.Count)
                {
                    return false;
                }

                if (x._properties != null && y._properties != null)
                {
                    foreach (var xProperty in x._properties)
                    {
                        object? yValue;
                        if (!y._properties.TryGetValue(xProperty.Key, out yValue))
                        {
                            return false;
                        }
                        if (!Equals(xProperty.Value, yValue))
                        {
                            return false;
                        }
                    }
                    foreach (var yProperty in y._properties)
                    {
                        object? xValue;
                        if (!x._properties.TryGetValue(yProperty.Key, out xValue))
                        {
                            return false;
                        }
                    }
                }
                else
                {
                    if (!EqualityUtility.EqualsWithNullCheck(x._assembly, y._assembly))
                    {
                        return false;
                    }
                    if (!EqualityUtility.EqualsWithNullCheck(x._locale, y._locale))
                    {
                        return false;
                    }
                    if (!EqualityUtility.EqualsWithNullCheck(x._related, y._related))
                    {
                        return false;
                    }
                    if (!EqualityUtility.EqualsWithNullCheck(x._msbuild, y._msbuild))
                    {
                        return false;
                    }
                    if (!EqualityUtility.EqualsWithNullCheck(x._tfm, y._tfm))
                    {
                        return false;
                    }
                    if (!EqualityUtility.EqualsWithNullCheck(x._rid, y._rid))
                    {
                        return false;
                    }
                    if (!EqualityUtility.EqualsWithNullCheck(x._any, y._any))
                    {
                        return false;
                    }
                    if (!EqualityUtility.EqualsWithNullCheck(x._satelliteAssembly, y._satelliteAssembly))
                    {
                        return false;
                    }
                    if (!EqualityUtility.EqualsWithNullCheck(x._codeLanguage, y._codeLanguage))
                    {
                        return false;
                    }
                }
                return true;
            }