public bool Equals()

in ReSharper.FSharp/src/FSharp/FSharp.TypeProviders.Protocol/src/Utils/ProvidedTypesComparer.cs [39:74]


    public bool Equals(ProvidedType x, ProvidedType y)
    {
      var xResult = TryGetFullName(x, out var xFullName);
      var yResult = TryGetFullName(y, out var yFullName);

      if (xResult != yResult) return false;
      if (GetAssemblyNameSafe(x) != GetAssemblyNameSafe(y)) return false;

      if (xResult)
      {
        if (xFullName != yFullName) return false;
      }
      else
      {
        // ReSharper disable PossibleNullReferenceException
        if (x.Name != y.Name) return false;
        if (x.Namespace != y.Namespace) return false;
      }

      var xIsGenericType = x.IsGenericType;
      if (xIsGenericType != y.IsGenericType) return false;

      if (xIsGenericType)
      {
        var xGenericArgs = x.GetGenericArguments();
        var yGenericArgs = y.GetGenericArguments();

        if (xGenericArgs.Length != yGenericArgs.Length) return false;

        for (var i = 0; i < xGenericArgs.Length; i++)
          if (!Equals(xGenericArgs[i], yGenericArgs[i]))
            return false;
      }

      return true;
    }