public void when_using_a_visitor()
        {
            //setup
            var controller = new PropertyBagVersionController<FlatPropertyBag>(TestHelper.CreateWithNonDefaultProperties<FlatPropertyBag>(), 
                                                                               _testHelper.MakeConfiguredCloneFactoryFor<FlatPropertyBag>(),
                                                                               _testHelper.EmptyChangeSet(),
                                                                               _testHelper.MakeConfiguredVisitorFactory(),
                                                                               _testHelper.MakeConfiguredProxyFactory());

            var fakeChildren = new[] {A.Fake<IVersionControlNode>(), A.Fake<IVersionControlNode>()};
            var fakeVisitor = A.Fake<IVersionControlTreeVisitor>();
            controller.Children.AddRange(fakeChildren);

            //act
            controller.Accept(fakeVisitor);

            //assert
            A.CallTo(() => fakeChildren.First().RecursiveAccept(fakeVisitor)).MustHaveHappened();
            A.CallTo(() => fakeChildren.Last().RecursiveAccept(fakeVisitor)).MustHaveHappened();
            A.CallTo(() => fakeVisitor.OnEntry(controller)).MustHaveHappened();
        }