public void ModifyType()
        {
            var fakeAssemblyAdviceDeclarations = new[] { ObjectMother.GetAdviceBuilder() };
            var fakeTypeAdviceDeclarations     = new[] { ObjectMother.GetAdviceBuilder() };
            var fakeMethodAdviceDeclarations   = new[] { ObjectMother.GetAdviceBuilder() };
            var allAdviceBuilders =
                fakeAssemblyAdviceDeclarations
                .Concat(fakeTypeAdviceDeclarations)
                .Concat(fakeMethodAdviceDeclarations);

            _adviceDeclarationProviderMock.Expect(x => x.GetDeclarations()).Return(fakeAssemblyAdviceDeclarations.AsOneTime());
            _adviceDeclarationProviderMock.Expect(x => x.GetDeclarations(_mutableType)).Return(fakeTypeAdviceDeclarations.AsOneTime());

            foreach (var method in _mutableType.GetMethods())
            {
                var method1     = method;
                var fakeAdvices = method.Name == "ToString" ? new[] { ObjectMother.GetAdvice() } : new Advice[0];

                _adviceDeclarationProviderMock
                .Expect(x => x.GetDeclarations(method))
                .Return(fakeMethodAdviceDeclarations);
                _adviceComposerMock
                .Expect(
                    x => x.Compose(
                        Arg <IEnumerable <IAdviceBuilder> > .List.Equal(allAdviceBuilders),
                        Arg <JoinPoint> .Matches(y => y.Member == method1)))
                .Return(fakeAdvices.AsOneTime());

                if (method.Name == "ToString")
                {
                    _weaverMock
                    .Expect(x => x.Weave(Arg <MethodInfo> .Is.Anything, Arg.Is(fakeAdvices)))
                    .WhenCalled(x =>
                    {
                        var mutableMethod = (MutableMethodInfo)x.Arguments[0];
                        Assert.That(mutableMethod.Name, Is.EqualTo(method.Name));
                    });
                }
            }

            _assembler.ModifyType(_mutableType);

            _adviceDeclarationProviderMock.VerifyAllExpectations();
            _adviceComposerMock.VerifyAllExpectations();
            _weaverMock.VerifyAllExpectations();
        }