public void WhenGenericTypesMatchExistingIntersector_ThenReturnTheExpectedIntersector()
            {
                // Arrange
                var expectedIntersector1 = BuildMockIntersector <Cube, Cube>();
                var expectedIntersector2 = BuildMockIntersector <Cube, Cylinder>();
                var expectedIntersector3 = BuildMockIntersector <Cylinder, Sphere>();
                var expectedIntersector4 = BuildMockIntersector <Sphere, Sphere>();

                IIntersector[] intersectors =
                {
                    expectedIntersector1,
                    expectedIntersector2,
                    expectedIntersector3,
                    expectedIntersector4
                };

                var registry = new IntersectorRegistry(intersectors);

                // Act
                var intersector1 = registry.GetIntersector <Cube, Cube>();
                var intersector2 = registry.GetIntersector <Cube, Cylinder>();
                var intersector3 = registry.GetIntersector <Cylinder, Sphere>();
                var intersector4 = registry.GetIntersector <Sphere, Sphere>();

                // Assert
                intersector1.Should().BeSameAs(expectedIntersector1, "Intersectors should be the same instance.");
                intersector2.Should().BeSameAs(expectedIntersector2, "Intersectors should be the same instance.");
                intersector3.Should().BeSameAs(expectedIntersector3, "Intersectors should be the same instance.");
                intersector4.Should().BeSameAs(expectedIntersector4, "Intersectors should be the same instance.");
            }
            public void WhenGenericTypesDoNotMatchExistingIntersector_ThenReturnNull()
            {
                // Arrange
                var intersector1 = BuildMockIntersector <Cube, Cube>();

                IIntersector[] intersectors =
                {
                    intersector1
                };

                var registry = new IntersectorRegistry(intersectors);

                // Act
                var result = registry.GetIntersector <Cylinder, Sphere>();

                // Assert
                result.Should().BeNull("Null should be returned when a matching intersector instance is not found.");
            }