public IAssemblyTransformation CreateTransformation()
        {
            if (_remotionInterfaces == null)
            {
                throw new InvalidOperationException("Please initialize options first! (ConstructorGenerator) : Remotion interfaces must be specified");
            }
            if (_workingDir == null)
            {
                throw new InvalidOperationException("Please initialize options first! (ConstructorGenerator) : Working directory must be specified");
            }

#if PERFORMANCE_OUTPUT
            Stopwatch s = new Stopwatch();
            s.Start();
#endif
            try
            {
                var checker = new StringAndReflectionBasedMixinChecker(_workingDir, _remotionInterfaces);

                return(new ConstructorGenerator(
                           checker,
                           new ILCodeGenerator(
                               new MethodReferenceGenerator(_remotionInterfaces, _objectFactory, _paramList),
                               checker)
                           ));
            }
            finally
            {
#if PERFORMANCE_OUTPUT
                s.Stop();
                Console.WriteLine("time for mixinconfiguration initialization : " + s.Elapsed);
                s.Restart();
#endif
            }
        }
        public void MixinChecker_Exception()
        {
            _checker = new StringAndReflectionBasedMixinChecker("workingDirectory", "assemblyNameRemotionInterfaces");

            var result = _checker.CanBeMixed(_assemblyDefinition.Name.BuildAssemblyQualifiedName(_assemblyDefinition.MainModule.Types[0]));

            Assert.That(result, Is.False);
        }