public void GivenAssetTargetFallbackEqualityIsTransitive()
        {
            var A1 = new AssetTargetFallbackFramework(NuGetFramework.Parse("netcoreapp2.0"), new[] { NuGetFramework.Parse("net461") });
            var A2 = new AssetTargetFallbackFramework(NuGetFramework.Parse("netcoreapp2.0"), new[] { NuGetFramework.Parse("net461") });
            var B1 = new AssetTargetFallbackFramework(NuGetFramework.Parse("netcoreapp2.0"), new[] { NuGetFramework.Parse("net462") });
            var B2 = new AssetTargetFallbackFramework(NuGetFramework.Parse("netcoreapp2.0"), new[] { NuGetFramework.Parse("net462") });
            var C1 = new AssetTargetFallbackFramework(NuGetFramework.Parse("netcoreapp1.0"), new[] { NuGetFramework.Parse("net462") });
            var C2 = new AssetTargetFallbackFramework(NuGetFramework.Parse("netcoreapp1.0"), new[] { NuGetFramework.Parse("net462") });

            // Check equivalents
            A1.Should().Be(A2);
            B1.Should().Be(B2);
            C1.Should().Be(C2);

            // Rest of the A1 -> B1,B2,C1,C2
            A1.Should().NotBe(B1);
            A1.Should().NotBe(B2);
            A1.Should().NotBe(C1);
            A1.Should().NotBe(C2);

            // Rest of the A2 -> B1,B2,C1,C2
            A2.Should().NotBe(B1);
            A2.Should().NotBe(B2);
            A2.Should().NotBe(C1);
            A2.Should().NotBe(C2);

            // B1 -> C1, C2
            B1.Should().NotBe(C1);
            B1.Should().NotBe(C2);

            // B2 -> C1, C2
            B2.Should().NotBe(C1);
            B2.Should().NotBe(C2);
        }