public void GetSubPaths_SubPathsHaveValidProperties(params string[] parms)
        {
            // arrange
            var sut = new CodePath();

            foreach (var name in parms)
            {
                var mockedMethod = Mock.Create <Method>();
                Mock.Arrange(() => mockedMethod.FullName).Returns(name);
                sut.AddLast(mockedMethod);
            }

            // act
            var subPathsList = sut.GetSubPaths().ToList();

            // assert
            for (int i = 0; i < subPathsList.Count; i++)
            {
                var currentPath = subPathsList[i];
                Assert.Equal(sut.Length - i - 1, currentPath.Length);
                Assert.Equal(sut.ElementAt(i + 1), currentPath.FirstMethod);
                Assert.Equal(sut.LastMethod, currentPath.LastMethod);
            }
        }